Vue项⽬中 登录时 对于token的处理

10 篇文章 0 订阅
2 篇文章 0 订阅

Vue项⽬中实现token验证⼤致思路如下:
1、⽤户输⼊账号密码,前端调后端的登陆接⼝,发送⽤户名和密码,
2、后端收到请求,验证⽤户名和密码,验证通过后(即登录成功),后端返回token给前端;
3、前端拿到token,将token存储到localStorage和vuex中,并跳转路由页⾯;
4、前端每次跳转路由,都要判断 localStroage 中有⽆ token ,没有就跳转到登录页⾯,有则跳转到对应路由页⾯( 通过
router.beforeEach((to, from, next)=>{.....}))
5、每次调后端接⼝,都要在请求头中加上token;
6、后端判断请求头中有⽆token,有token,就拿到token并验证token,验证成功就返回数据,验证失败(例如:token过期)就返回编码
401(编码由前台和后台约定好),请求头中没有token也返回编码401;
7、如果前端拿到状态码为401,则清除token信息并跳转到登录页⾯,并弹框提⽰⽤户当前缺少token或者token已失效,请重新登录。


举个例子:

控制后台主页的访问权限

需求:登录后才能访问后台主页

目标:使用全局导航守卫控制页面权限

// 声明全局前置守卫,控制后台主页的访问权限
router.beforeEach((to, from, next) => {
  if (to.path === '/') {
    // 访问的是后台主页,需要判断是否登录
    // 获取本地的 token
    const token = localStorage.getItem('token')
    if (token) {
      // 已登录,直接放行
      next()
    } else {
      // 没登录,跳转到登录页
      next('/login')
    }
  } else {
    // 其他页面直接放行
    next()
  }
})

token 值无效时,清空 token,并强制跳转到登录页

目标:使用 axios 响应拦截器处理 token 失效的问题

 // 定义响应拦截器
  axios.interceptors.response.use(function(response) {
    // 请求成功时(状态码为 200),触发的回调函数,response 是“成功的结果”
    return response
  }, function(error) {
    // 请求失败时(状态码不是 200),触发的回调函数,error 是“失败的结果”
    // token 失效
    if (error.response.status === 401) {
      // 清空 token
      localStorage.removeItem('token')
      // 跳转到登录页
      router.push('/login')
    }
    return Promise.reject(error)
  })
  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值