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

利用路由守卫实现token过期后返回登录界面的更多相关文章

  1. ubuntu忽然不能登录,输入密码正确一直返回登录界面

    问题描述 由于配置eclipse命令启动,我修改了 /etc/environment 文件的内容,用命令 shutdown -r -now 重启后,输入密码正确一直返回登录界面. 查了下网上资料:系统 ...

  2. JavaBean组件<jsp:forward>动作<jsp:param>动作登录页面输入用户名和密码,然后进入检查页面判断是否符合要求,符合要求跳转到成功界面,不符合要求返回登录界面,显示错误信息。

    JavaBean组件 JavaBean组件实际是一种java类.通过封装属性和方法成为具有某种功能或者处理某个业务的对象. 特点:1.实现代码的重复利用.2.容易编写和维护.3.jsp页面调用方便. ...

  3. token回话保持,axios请求拦截和导航守卫以及token过期处理

    1:了解token:有时候大家又说token令牌.整个机制是前端第一次登陆发送请求,后端会根据前端的用户名和密码, 通过一些列的算法的到一个token令牌, 这个令牌是独一无二的,前端每次发送请求都需 ...

  4. Laravel Passport token过期后判断refresh_token是否过期

    需求:前后端分离状态下,登录失效(token过期)后,前端需要知道下一步是跳转到登录页面还是使用refresh_token刷新token. 这就需要后端根据是否可以刷新token(refresh_to ...

  5. vue全局路由守卫beforeEach+token验证+node

    在后端安装jsonwebtoken         npm i jsonwebtoken --save 在 login.js文件中引入      // 引入jwtconst jwt = require ...

  6. vue路由守卫应用,监听是否登录

    路由跳转前做一些验证,比如登录验证,是网站中的普遍需求. 对此,vue-route 提供的 beforeRouteUpdate 可以方便地实现导航守卫(navigation-guards). 导航守卫 ...

  7. ubuntu14.04忽然不能登录,输入密码一直返回登录界面

    解决方法: 1.ctrl + alt + F1进入命令终端 2.重装gdm,sudo apt-get install gdm 3.修改启动顺序:dpkg -reconfigure gdm 4.重启re ...

  8. kubeadm 生成的token过期后,集群增加节点

    通过kubeadm初始化后,都会提供node加入的token: You should now deploy a pod network to the cluster. Run "kubect ...

  9. 使用kubeadm 新加入节点(原始token过期后)---转发

    kubeadm join kubeadm init 安装完成后你会得到以下的输出,使用join指令可以新增节点到集群,此token 有效期为24小时 You should now deploy a p ...

  10. thinkphp实现登录后返回原界面

    主要思路还是用session记录原地址,在登录后再跳转回原界面 先保存请求login方法界面的url public function savelogin(){ session('returnUrl', ...

随机推荐

  1. OpenVSCode云端IDE加入Rainbond一体化开发体系

    OpenVSCode 是一款基于Web 界面的在线IDE 代码编辑器,只需要PC端存在浏览器即可使用,更轻量,高效,简洁,其基础功能完全继承了微软出品的 VS Code ,可以通过安装扩展的方式继续加 ...

  2. Vue.js 动画与过渡效果实战

    title: Vue.js 动画与过渡效果实战 date: 2024/6/4 updated: 2024/6/4 description: 这篇文章介绍了如何在网页设计中使用过渡动画和组件效果,以及如 ...

  3. C# 指针简单使用

    1. 使用unsafe C# 支持 unsafe 上下文,你可在其中编写不可验证的代码. 在 unsafe 上下文中,代码可使用指针.分配和释放内存块,以及使用函数指针调用方法. C# 中的不安全代码 ...

  4. Python实现字符串模糊匹配

      在一个字符串中,有时需对其中某些内容进行模糊匹配以实现条件的判定,如在"你好,hello,world"中判断是否含有"llo".Python中通过re.se ...

  5. EF 从设计器改为 DB First时遇到 Keyword not supported: 'data source'.

    EF 从设计器改为 DB First时遇到 Keyword not supported: 'data source'. 解决方法: 把providerName="System.Data.En ...

  6. Scrapy框架(四)--五大核心组件

    scrapy的基本使用我们已经掌握,但是各位心中一定会有些许的疑问,我们在编写scrapy工程的时候,我们只是在定义相关类中的属性或者方法, 但是我们并没有手动的对类进行实例化或者手动调用过相关的方法 ...

  7. Spring扩展——BeanPostProcessor(BPP)

    BeanPostProcess简介 在Spring中 BeanPostProcessor 是一个非常重要的接口,它用于在每个bean对象初始化前后修改Bean的属性信息,比如我们最常用的@Autowi ...

  8. unity Entitas框架简介

    插件及文档:https://github.com/sschmid/Entitas-CSharp/wiki/Home 资料: https://zhuanlan.zhihu.com/p/78155704 ...

  9. poj1338 ugly number 题解 打表

    类似的题目有HDU1058 humble number(翻译下来都是丑陋的数字). Description Ugly numbers are numbers whose only prime fact ...

  10. AtCoder Beginner Contest 302 H. Ball Collector 题解 可撤销并查集

    为了更好的阅读体验,请单击这里 AtCoder Beginner Contest 302 H. Ball Collector 题意跳过. 可以视作将 \(a_i, b_i\) 之间连了一条边,然后 \ ...