三种登录形式的实现—永久登录、每次进入页面登录、设置登录有效期

  • 前言
  • 一、sessionStorage和localStorage区别和使用
    • 1、localStorage(本地储存):
    • 2、sessionStorage(会话储存):
  • 二、每次进入页面登录:
  • 三、设置登录有效期:
    • 方法一 、
    • 方法二 、

前言

本文内容和案例基于vue+token实现,有关如何实现基本的登录功能在 “前端vue3+token实现用户认证” 文章有提到,这里不做过多累述。
注:上面文章里的写法就是用户在登录页面登录一次后若不主动退出登录就会永久登录,下次进入页面无需二次登录。


一、sessionStorage和localStorage区别和使用

1、localStorage(本地储存):

  • localStorage 属性存储的数据将保存在浏览器会话中,并且储存的数据可以长期保留;当页面会话结束——也就是说,当页面被关闭时,存储在 localStorage的数据不会被清除 。
  • 使用localStorage 属性储存的数据可在同一浏览器下的不同页面(同源页面)共享。

2、sessionStorage(会话储存):

  • sessionStorage 属性存储的数据在页面会话结束——页面被关闭时,存储在 sessionStorage的数据将会被全部清除 。
  • 使用sessionStorage 属性储存的数据可在同一浏览器下的不同页面不可共享,打开多个相同的URL的Tabs页面,会创建各自的sessionStorage。

二、每次进入页面登录:

由上面提到的 sessionStorage 和 localStorage 区别可知,只要把本地储存由 localStorage 更改为 sessionStorage 便可实现

三、设置登录有效期:

方法一 、

  1. 在每次登录的时候记录登录时间(例如:用本地时间戳或向后端请求获取当前时间),并使用 localStorage 记录于本地。
  2. 每次打开页面时获取当前时间,记录于本地。并且使用当前时间-登录时记录的时间,若大于有效期则清空控制登录状态的相关数据,,跳转到登录页。

例:

//每次登录成功则记录登录时间window.localStorage.setItem("loginTime", Date.parse(new Date()));
//七天登录有效期设置let loginTime = window.localStorage.getItem("loginTime");let nowTime = Date.parse(new Date());let intervalTime = nowTime - loginTime;
//时间戳大小-------十秒:10000;一分钟:60000;七天:604800000if (intervalTime >= 604800000) {//清空控制登录状态的相关数据,并且跳转页面window.localStorage.setItem("loginFlag", "");this.$store.state.loginFlag = false;this.$router.push("/login");}

方法二 、

  1. 和后端协商设置token有效期,并在用户打开页面时设置发送带token的请求接口用于验证token是否有效,若token过期则返回指定错误码。
  2. 前端获取到指定错误码后则跳转到登录页。

例:

// 响应拦截instance.interceptors.response.use(res => {return res ? res.data : res;}, err => {console.log(err);// "401" ,需要身份验证if (err.response.status == '401') {Toast.fail('请先登录');router.push({ path: '/login' });}

提示:文章到此结束,本文仅为个人看法,若有不足欢迎各位指出。

三种登录形式的实现—永久登录、每次进入页面登录、设置登录有效期相关推荐

  1. VMWare虚拟机三种网络形式

    网关的概念 网关: 网关实质上是一个网络通向其他网络的IP地址.比如有网络A和网络B,网络A的IP地址范围为"192.168.1.1~192. 168.1.254",子网掩码为25 ...

  2. File类的构造方法:三种重载形式(新手)

    //导入的包.import java.io.File;//File类的构造方法 三种重载形式//创建的一个类.public class zylx1 { //公共静态的主方法. public stati ...

  3. 二极管的三种击穿形式

    二极管的三种击穿形式 二极管的击穿通常有三种情况:雪崩击穿.齐纳击穿和热击穿. PN结反向击穿有齐纳击穿和雪崩击穿,一般两种击穿同时存在.对于齐纳管来说,两者的区别主要是:电压低于5-6V的齐纳管,齐 ...

  4. IP 地址的三种表示形式

    使用TCP/IP协议进行网络应用开发的朋友首先要面对的就是对IP地址信息的处理.IP地址其实有三种不同的表示格式:   1)Ascii(网络点分字符串)-        2) 网络地址(32位无符号整 ...

  5. 机器数的三种表示形式---原码、补码、反码和移码

    疫情严重,没去上班,总结学习一下.武汉加油,中国加油. 一.真值和机器数 介绍机器数的三种表示形式之前,先介绍一下真值和机器数. 带+.-符号的数叫真值,把符号数字化得到的数称为机器数(1表示-,0表 ...

  6. JAVA编写程序,打印九九乘法表(涵盖三种表达形式)

    运用java写出九九乘法表可以概括为三种表达形式 一是长方型 二是正三角型 三是倒三角型 无论是那种,用的都是for循环. 思路: 用两个for循环嵌套循环出因子a乘因子b等于乘积,外循环代表因子a ...

  7. 种草短视频的三种风格形式,问答、剧情和直述,总有一种适合你

    种草短视频的三种风格形式,问答.剧情和直述,总有一种适合你 想要做好种草短视频,最重要的一点还是要选对做种草短视频的风格形式,比如问答式.剧情式和直述式,总有一种是适合你做的. 一:问答式. 问答式的 ...

  8. Oracle中的emp、dept、bonus及salgrade表的新建及MySQL中的三种注释形式

    /*下面会包含三种mysql的注释形式 1.#... 2."-- ..."(--后需加一个空格) 3.*/ #1.创建dept表;插入dept表中的值 CREATE TABLE d ...

  9. 鲁棒最小二乘法的三种优化形式(CVX)

    文章目录 数据初始部分 (a) robust least-squares problem (b)least-squares problem with variable weights (c)quadr ...

最新文章

  1. DPDK — 安装部署(Ubuntu 18.04)
  2. python数据分析的主要流程-python 数据分析概述
  3. 微软并行编程类库Parallel Extensions初探 Part1
  4. 2013年 省职业学校 公共基础课程 两课 评比 计算机应用,江苏省职业学校公共基础课程两课评比教案.doc...
  5. 大批工厂提前20天放假,而大家却都在玩金融
  6. Mysql中行转列和列转行
  7. 【LightOJ - 1027】A Dangerous Maze(概率dp,数学期望)
  8. 帐户分类 密码强度
  9. linq to sql查询中返回linq自动建立的实体类型)
  10. Java实训项目6:GUI学生信息管理系统 - 实现步骤 - 创建项目
  11. 联想笔记本键盘排线_三分钟了解笔记本键盘维修技巧
  12. 各种版本的Visual C++编译器
  13. maven如果正常配置不成功,就按照我的就可以配置成功了
  14. 进销存管理系统是什么?能给企业带来哪些好处?
  15. 城市级智能网联示范区情况全扫描
  16. 浏览器 实现复制粘贴 上传图片, js实现粘贴图片预览功能
  17. 快捷c语言中控程序,CREATOR快捷\creator\CR-PGMII\ST-7600C\CREATOR中控
  18. Shader实现漫反射
  19. Kafka分区分配策略以及重平衡过程总结
  20. C++封装一个易用的打印backtrace信息的函数

热门文章

  1. Java 访问MySQL的小例子
  2. 计算机科学与技术专业适合什么人,计算机科学与技术专业怎么样 主要学什么内容...
  3. java获得百度地图驾车距离_如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)...
  4. Swift - 第三方图表库Charts使用详解23(雷达图)
  5. 我的爸爸正在计算机前写报告,关于计算器的作文结尾
  6. Peterson拓展到多线程情况
  7. 【删除含有合并单元格的excel某列】
  8. 微信小程序 如何等待onLaunch拿到后端数据后,再执行onLoad
  9. viso绘制技巧(例,绘制太极图)
  10. android技术分析