vue-router判断页面未登录时,自动跳转到登录页

1.定义路由的时候配置meta属性,requireAuth用来标记跳转的这个路由是否需要检测登录

下面的两个页面,登录页不需要检测,首页需要检测

const routers = [
{
     path: '/',
     component: App,
    children: [
    { 
    path: '/login', 
    component: Login,
      meta: {
        title: '登录'
}    },    {     path: '/home',     component: Home, meta: { title: '首页', requireAuth: true }    }   ] } ] export default routers

2.main.js

返回遍历的某个路由对象,我们定义为record,检测这个对象是否拥有meta这个对象,如果有meta这个对象,检测meta对象是不是有requireAuth这个属性且为true

检测到需要登录权限后,我的做法是请求接口判断用户是否登录

如果未登录,跳转到登录页面;如果已经登录,确保要调用next()方法,否则钩子就不会被resolved

router.beforeEach((to, from, next) => {
  /* 页面title */
  if (to.meta.title) {
    document.title = to.meta.title
  }
  /* 判断该路由是否需要登录权限 */
  if (to.matched.some(record => record.meta.requireAuth)) {
    //是否登录
    axios.post('/home/user/isLogin')
        .then(function (response) {
            if (response.data.code == 0) {
                //未登录
                if (response.data.data.online == 0) {
                    next({
                        path: '/login',
                    })
                } else {
                    //已登录
                    next()
                }
            }
        })
        .catch(function (error) {
            // Toast(error.data.msg);
        });

  }
  next();
})

 

转载于:https://www.cnblogs.com/liuqianrong/p/9518741.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值