Spring mvc session cookie实现自动登录

设计过程

1. user表存储用户名密码等信息,login表存放用户登陆状态的表

user表中存储username,pwd,等信息

login表存username,series(UUID),token(过期时间,用户名,密码 加密后数据),  validTime 过期时间。

2.调用用户登陆接口并且用户名密码验证成功之后,

a.计算登陆最大过期时间

b.生成token,(我是用过期时间+用户名+密码+盐)

c.生成cookievalue(用户名+UUID 并加密,格式自定义,方便取用户名和UUID就行,我是username+"_"+UUID)

d.查询登陆记录表,是否有登陆过。没有登陆,则插入登陆记录,有登陆记录,则更新series,token,过期时间。

f.添加cookie 到response cookiename(自己设定)  cookievalue 即c

g.登陆成功后,可以把用户相关信息存入session,防止出现禁用cookie设置,这样可以在浏览器没有关闭的时候,使用session访问。

3.定义登陆拦截器,拦截除了登陆之外的所有接口(可以按照个人需求去拦截)

a.先找session中用户,如果能找到,则直接访问,如果找不到,取cookie->b

b.根据自定义的cookiename取到cookievalue后,解密后,字符串分割得到用户名和UUID

c.使用用户名和UUID查到登陆记录,判断当前时间是否在过期时间之前,如果过期,删除cookie后则重新登陆,没过期的->d

d.根据用户名查到用户信息,取到用户名密码,加上登陆记录中的过期时间,计算一把新token(因为修改密码后,需要重新登陆),新token与登陆记录中的token进行比较,不同则删除cookie后重新登陆,相同->f

f.token相同基本登陆验证已经完成了,再去数据库更新登陆记录表,把series,token,过期时间更新

j.把用户信息写进session中即可。

结束。

猜你喜欢

转载自www.cnblogs.com/crazygentleman/p/10678358.html