设计过程
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中即可。
结束。