VUE实现已登录账号在地址栏输入登录页地址无痕跳转到首页

vue项目已登录,然后在地址栏输入登录页地址,还是跳转到了登录页。为提升用户体验,需要实现在输入登录页地址时,跳转到首页。

实现这个小功能:有两个步骤
1.判断token,不能简单的判断是否为空,还要判断是否有效,判断是否有效有两个方式:
(1)在页面维护token有效期,这种方式简单,但是在其他浏览器登录,当前的token维护的有效期就不准了。
(2)写一个校验接口。
2.怎么实现跳转,有三种方式:
(1)可以在登录页面进行判断,但是这样会实现闪屏,页面会闪下登录页面,然后再跳转到首页。
(2)实现一个空白页面作为vue的起始页面,在这个页面里进行判断是跳转到首页还是跳转到登录页面。
(3)在main.js中实现。

后台的代码就不上了,因为大家的后台不同,实现安全校验的逻辑也不同。我在后台添加的校验token的url是“/check/token“

下面是前端页面的代码,“/Home"为我的首页。
main.js中的代码涉及到的是下面两部分
axios拦截

// 创建axios实例
const service = axios.create({
  // 请求超时时间
  timeout: 30000
})
service.interceptors.response.use(
  response => {
    let res = {}
    res.status = response.status
    res.data = response.data
    return res
  },
  error => {
    console.log(JSON.stringify(error.response))
    if(error.config.url.indexOf('/check/token') >= 0){
      return Promise.reject(error.response)
    }else {
      open('提示', error.response.data.msg, function () {
        store.dispatch('delUser')
        router.push('/')
      })
    }
    return Promise.reject(error.response)
  }
)

router代码

router.beforeEach((to, from, next) => {
  if (to.path === '/') {
    if(to.params.t == null){
      post('/admin-provider/check/token')
        .then(res => {
          next('/Home')   
        }).catch(error=>{
          next()
        })
    }else{
      next()
    }
  }else{
    next()
  }
})

版权声明:本文为u014127635原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。