以下为登陆页面点击事件,点击登录时调用接口,并将得到的值存入缓存,变量_query为拦截到的路由地址,当登录成功后,跳转到被拦截的路由页面
var _query = _this.$route.query.redirect;
if (res.data.code == 0) {
localStorage.setItem('session3rd',_data);
_this.$dialog.toast({
mes: _msg,
timeout: 1000,
callback: () => {
_this.$router.push(_query);
}
});
}
在router的index.js中设置meta属性,添加登陆拦截需要的字段
{
path: '/mine',
name: 'Mine',
component: Mine,
meta: {
requireAuth: true // 添加该字段,表示进入这个路由是需要登录的
}
}
在main.js文件中,使用路由的beforeEach,拿到储存在缓存中的值,进行对值的判断
router.beforeEach((to, from, next) => {
if (to.meta.requireAuth) { // 判断该路由是否需要登录权限
let isLogin=localStorage.getItem('session3rd');
if (isLogin) {
next();
}
else {
next({
path: '/login',
query: {redirect: to.fullPath} // 将跳转的路由path作为参数,登录成功后跳转到该路由
})
}
}
else {
next();
}
});