首页 > 其他分享 >利用路由守卫实现token过期后返回登录界面

利用路由守卫实现token过期后返回登录界面

时间:2023-11-06 21:45:50浏览次数:29  
标签:const 登录 过期 token time Date new 路由

const timeX = localStorage.getItem("time");
//如果有时间戳存在会判断token是否过期
if(timeX!==null){
const time=timeX.slice(1,-1)//获取了token的过期时间
const tokenTime=new Date(time);

const currentTimeUS=new Date();
const currentTimeCN=new Date(currentTimeUS.getTime()+8*60*60*1000)

if(currentTimeCN>tokenTime&& to.path !== '/login' && to.path !== '/register'){
localStorage.removeItem("user")
localStorage.removeItem("time")
return next('/login')
}
//在登录的时候往localstorage中塞一个date
const currentDate=new Date();
const tokenUselessDate=new Date(currentDate.getTime()+10*60*60*1000);
localStorage.setItem("time",JSON.stringify(tokenUselessDate));

最后加上登录状态异常的弹窗,完善了退出登录时的提醒

 总结:这次遇到了不少坑,完成这一个小操作居然花了我2个小时

1.从localstorage中取出来的"time"是带引号的,如果直接丢给date格式化处理他会返回不了正确时间

2.vue的报错一定要仔细看浏览器的控制台,一开始我写入的时候timeX可能为空,后面还有对他进行字符串格式化的处理会导致一旦这玩意取不出来,整个页面就不显示了。

3.一定要注意不要在路由中形成环,我在路由中把登录注册内不包含信息给写上了,不然也会整个页面不显示

标签:const,登录,过期,token,time,Date,new,路由
From: https://www.cnblogs.com/kun1790051360/p/17813815.html

相关文章

  • 如何在不刷新页面的情况下更改Nuxt.js路由器的路由参数?
    要在不刷新页面的情况下更改Nuxt.js路由器的路由参数,你可以使用Nuxt.js提供的$router.push方法,并传递一个新的路由对象。下面是一个示例://使用$router.push更新路由参数this.$router.push({path:'/your-route-path',query:{param1:'value1',param2:'value2'......
  • Jwt生成token详解
     publicStringcreateTokenByBao(StringuserId){Datedate=newDate();Stringtoken=Jwts.builder()//创建一个JWT构建器,用于创建和配置JWT。.setSubject(userId)//主题--生成token所需内容设置.setIssuedAt(date)//签发时间......
  • Golang使用grpc实现token拦截
    上一篇简单使用了grpcGolang简单使用grpcserverpackagemainimport( "fmt" "golang.org/x/net/context" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/grpclog" "google.golang.......
  • 基于 Axios 封装一个完美的双 token 无感刷新
    用户登录之后,会返回一个用户的标识,之后带上这个标识请求别的接口,就能识别出该用户。标识登录状态的方案有两种:session和jwt。session是通过cookie返回一个id,关联服务端内存里保存的session对象,请求时服务端取出cookie里id对应的session对象,就可以拿到用户信息。jwt......
  • 前端的路由如何实现跳转?
     下面的路由配置-访问路径为: http://localhost:9999/#/ok/productData/tpProductDatajs配置路由跳转consttpRouter={path:'/ok',component:Layout,name:'ok',meta:{},children:[{path:'indexPricing�......
  • Cookie、session、token、sign鉴权
    Cookie及token请求原理:cookie信息 第一次访问及登陆接口的响应头里会返回:set-cookie,包含Uid,sessionId、域名domain;token是在登陆接口的响应体里返回的。其它接口在请求头里携带cookie或token.web通常用cookie,移动端通常用token Cookie是在响应头里返......
  • 【django框架】共4大模块50页md学习文档 第3篇:django路由和网络请求使用详解
    当你考虑开发现代化、高效且可扩展的网站和Web应用时,Django是一个强大的选择。Django是一个流行的开源PythonWeb框架,它提供了一个坚实的基础,帮助开发者快速构建功能丰富且高度定制的Web应用全套Django笔记直接地址:请移步这里共10章,31子模块,总计2w余字路由配置学习目......
  • vue3路由转发报错Failed to resolve component: router-link
     //在学习vue3路由转发的时候,总是报路由的一些方法无法识别,undefined报错://App.vue:9[Vuewarn]:Failedtoresolvecomponent:router-link//vue路由跳转报错Cannotreadpropertiesofundefined(reading'push')原因:出在你挂载的位置这个路由的u......
  • 【Flask框架】全知识点笔记4章60页MD文档,今日主题:flask视图和路由开发
    本文的主要内容:flask视图&路由、虚拟环境安装、路由各种定义、状态保持、cookie、session、模板基本使用、过滤器&自定义过滤器、模板代码复用:宏、继承/包含、模板中特有变量和函数、Flask-WTF表单、CSRF、数据库操作、ORM、Flask-SQLAlchemy、增删改查操作、案例、蓝图、单元测......
  • Vue3Router路由传参
    import{useRouter}from'vue-router'//首先在setup中定义constrouter=useRouter()//字符串router.push('home')//对象router.push({path:'home'})//命名的路由router.push({name:'user',params:{userId:'123......