main.js
import Vue from 'vue'
import App from './App.vue'
import router from './router'
import './plugins/element.js'
import './assets/css.css'
import axios from 'axios' // 导包 axios
Vue.config.productionTip = false
axios.defaults.baseURL= 'http://localhost:9090' // 设置根路径 // 避免跨域
axios.interceptors.request.use( config =>{ // 路由导航
// console.log(config);
config.headers.Authorization = window.sessionStorage.getItem('token')
return config
})
Vue.prototype.$http = axios // 设置全局变量 $http
new Vue({
router,
render: h => h(App)
}).$mount('#app')
index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import Home from '../components/HomeExam.vue'
import Login from '../components/LoginExam.vue'
Vue.use(VueRouter)
const routes = [
{
path: '/home', name: 'home', component: Home
},
{
path: '/login', name: 'login',component: Login
},
{
path: '/', redirect:'/login' // redirect 默认跳转 login
}
]
const router = new VueRouter({
routes
})
// 挂载路由导航卫士
// to 是将要访问的路径 from 代表从哪个路径跳转而来 next 是放行函数
// 有两种 next() / next('/login')
// 这个是效验是否有token
router.beforeEach((to,from,next) =>{
if(to.path === '/login'){
return next();
}
// 获取到 token 是否有token
const token = window.sessionStorage.getItem('token')
if (!token) {
return next('/login') // 如果为空 则返回
}
next() // 放行
})
export default router