页面长时间未操作,实现自动退出登录原理

页面长时间未操作,实现自动退出登录原理

项目场景:

页面长时间未操作的时候,会自动退出登录,并且提示你的登录已过期,需重新登录。那这个是怎么实现的呢?

两种方案

第一种是完全由后端实现的,后台在servlet可以获取到session,可以设置一个十分钟(这个时间根据你的需求而定)的过期时间,过期sessionId会重新生成,后端直接判断当前sessionId是否更改,判断完后直接重定向到登录页面。

第二种是由前端和后端配合实现的,当我们登录系统时,在登陆后,后台会种一个指定时长的登录态到cookie;前端的原理很简单,就是轮询登录态,发现登录态过期了,就弹框提示

代码如下:

// 1.获取本地登录态;

let userCookie = $.cookie( 'appid ');

// 2.轮询登录态

let timerId = setInterval(()={

// 判断当前获取的登录态和之前获取的登录态是否一致

if($.cookie( 'appid') != usercookie){

// 不一致时,估计是不同用户登录

// 继续判断当前登录态是否过期

if(typeof $.cookie( 'appid') == undefined && typeof userCookie != undefined)E

// 登录态过期则弹窗提示

alert("您的登录已过期请重新登录");

}

}},1000)

关于它的Tips:

登录态:在服务端一般会使用session或者token来表示用户的登录状态,用来标识这个用户的身份。

登录成功后,后端会给session设置一个字段,给字段设置对应的值,过期失效后这个值就会变成空或者undefined之类的。

登录态的解析一般就是入参是token,而返回结果是userId的方法(或服务、接口),第一次登录成功时,后端会把用户信息加密生成一个token,通过登录接口返回给前端 ;解析登录态时,前端通过发请求调接口的方法把token传到后台,由后端解析判断

登录态的几种类型:

1.存储型token

存储型token,就是根据token这个字符串,可以在服务端存储上查到用户信息,那就是校验成功,如果查不到,那就是校验失败。

2.计算型token

计算型token,就是把用户信息如userId加密成一个字符串,这个字符串就是token,那么每次解析其实就是解密,解密出明文,比如userId,generateTimestamp,那么再根据generateTimestamp判断是否过期,如果解析都失败了,那就直接失败。

3.计算和存储

考虑到计算和存储的优劣势,我们可以考虑结合他们。这里举个例子token是个加密后的密文,解密后可以分成好几个字段,分别代表userId,generateTime,randomString。那么,如果解析都失败了,那就直接失败了,如果解析成功了,再根据generateTime来判断是否过期,如果过期了,那也直接失败了,如果都通过了,在拿randomString去存储中查询,以Redis为例,我们的存储结构可以设计成key是userId,value是sorted set,其中每个元素就是randomString,查得到就是合法,查不到就是非法。

来源:简书

作者:Christine的学习日记

链接:https://www.jianshu.com/p/7829f6ece110

相关数据

画对称图形简笔画大全打印版(共15张)
office365

画对称图形简笔画大全打印版(共15张)

⌛ 07-09 👁️‍🗨️ 5442
别想歪,“菠萝奶子”其实是一款车!
office365

别想歪,“菠萝奶子”其实是一款车!

⌛ 07-10 👁️‍🗨️ 3667
发条英雄冰雪节皮肤详解:价格及特色解析(2025版)
mobileBET365

发条英雄冰雪节皮肤详解:价格及特色解析(2025版)

⌛ 06-29 👁️‍🗨️ 4296
瘦超多!教练曝杜海涛健身瘦近30斤 小腹平肌肉增加
mobileBET365

瘦超多!教练曝杜海涛健身瘦近30斤 小腹平肌肉增加

⌛ 07-02 👁️‍🗨️ 8665
无需密码解锁 Windows 10 电脑:全面指南 - 都叫兽软件
mobileBET365

无需密码解锁 Windows 10 电脑:全面指南 - 都叫兽软件

⌛ 06-27 👁️‍🗨️ 840
斯蒂卡145感受
office365

斯蒂卡145感受

⌛ 07-02 👁️‍🗨️ 1906