0


前端实现免密登录

最近接到个需求,就是实现免密登录,用户在url参数中携带加密的token,直接进入首页,不需要登录,具体实现如下:

在router.beforeEach守卫中进行处理

router.beforeEach(async (to: any, from, next) => {
  const token = to.query.token // 从路由参数中获取 token
  //判断url是否携带token
  if (to.meta.whiteList && token) {
    const decodedToken = Base64.decode(token);// 解密 Base64 编码的 token
    //验证 token 的有效性并登录用户 
    let data = {
      token: decodedToken
    }
    try {
      let res:any = await checktoken(data)
        // .then((res: any) => {
        // 验证成功,将用户信息保存到全局状态管理或本地存储 pinia
      if (res.code == 0) {
          
          storage.local.set('token', res.data.accessToken);
          // storage.local.set('token', Base64.decode(token));
          storage.local.set('username', res.data.userName)
          storage.local.set('expiresTime', res.data.expiresTime)
          storage.local.set('tenantid', JSON.stringify(res.data.tenantId))
          let asTenant = ref({
            id: res.data.tenantId,
            name: res.data.tenantName
          })

          storage.local.set('asTenant', JSON.stringify(asTenant.value))
          userStore.token = res.data.accessToken
          userStore.username = res.data.userName
          userStore.expiresTime = res.data.expiresTime
          userStore.tenantid = res.data.tenantId
          userStore.asTenant = asTenant.value
          //修改登录状态
          userStore.isLogin = true
          // console.log(userStore.isLogin);

        } 
      // })
  }
     catch (error) {
      // console.log(error, '222');
      userStore.urltoken = true
    }
     
  }

本文转载自: https://blog.csdn.net/m0_68716504/article/details/137010114
版权归原作者 前端小趴菜05 所有, 如有侵权,请联系我们删除。

“前端实现免密登录”的评论:

还没有评论