toke过期失效 ---提示并跳转到登录页面

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了toke过期失效 ---提示并跳转到登录页面相关的知识,希望对你有一定的参考价值。

参考技术A token过期自动跳转到登录页面

设置token有效期为2小时,超过两小时 token失效 ,接口返回结果:code:0,msg:'token过期',

每次路由跳转都会对token进行判断,设置一个全局的beforeEach钩子函数,如果token存在就跳到你所需要的页面,否则直接跳转到登录页面,让用户重新存取token

全局路由钩子:router.beforeEach

router.beforeEach(async (to, from, next) =>

            //获取token

            const hasToken = getToken()

            if (hasToken)

                //token存在,如果当前跳转的路由是登录界面

                if (to.path === '/login')

                    // if is logged in, redirect to the home page

                    next(

                        path: '/'

                    )

                else

                    //在这里,就拉去用户权限,判断用户是否有权限访问这个路由

                catch (error)

                    // remove token and go to login page to re-login

                    await store.dispatch('user/resetToken')

                    Message.error(error || 'Has Error')

                    next(`/login?redirect=$to.path`)

               

            else

                //token不存在

                if (whiteList.indexOf(to.path) !== -1)

                    //如果要跳转的路由在白名单里,则跳转过去

                    next()

                else

                    //否则跳转到登录页面

                    next(`/login?redirect=$to.path`)

               

           

        )

请求拦截 设置

import axios from 'axios'

import MessageBox, Message from 'element-ui'

import store from '@/store'

import getToken from '@/utils/auth'

const service = axios.create(

  baseURL: process.env.VUE_APP_BASE_API,

  timeout: 5000

)

//发送请求时把token携带过去

service.interceptors.request.use(

  config =>

    if (store.getters.token)

      config.headers['sg-token'] = getToken()

   

    return config

  ,

  error =>

    console.log(error)

    return Promise.reject(error)

 

)

//请求响应

service.interceptors.response.use(

  response =>

    console.log(response.data)

    const res = response.data

    // token过期,重返登录界面

    if (res.code === 0)

      store.dispatch('user/logout').then(() =>

        location.reload(true)

      )

   

    return res

  ,

  error =>

    Message(

      message: error.msg,

      type: 'error',

      duration: 5 * 1000

    )

    return Promise.reject(error)

 

)

export default service

以上是关于toke过期失效 ---提示并跳转到登录页面的主要内容,如果未能解决你的问题,请参考以下文章

PHP会话控制之失效时间与过期回收机制

缓存失效

vue axios封装请求 + 刷新过期JWT

由内存过期失效引起的密码爆破

session过期怎么恢复

如果你使用了过期或失效的ISO认证证书,会违反哪些法律法规?