1. 什么是路由守卫?
路由守卫是一个路由的访问机制,如果允许访问就放行,不允许访问就不放行,可以通过 router.beforeEach() 方法来实现对应的操作。
2. 为什么要用路由守卫?
由于访问路由时,没有判断直接就可以进入系统,跳过登陆页面,导致系统不安全,所以需要用路由守卫
3. 如何实现路由守卫?
在 router/index.js 里面添加路由守卫
//路由守卫
router.beforeEach(function(to, from, next){
if(to.path==='/login'){
next(); //登陆页面直接放行
}else{
let token = local.get('token');
if(token){
next(); //存在token 直接放行
}else{
Message.error('你被发现了,你的IP地址已记录,我们已报警...');
next({path:'/login'});
}
}
});
4. 防止伪造token
为了防止伪造token,需要在响应拦截器里面判断返回状态是不是401,如果是就做跳转
axios.interceptors.response.use(function (res) {
return res;
}, function (err) {
//判断如果是401,就报错,并跳转
if(err.response.status===401){
Message.error(err.response.data.msg)
window.location.href='#/login';
}
//访问失败时执行
return Promise.reject(err);
});