发表于: 2017-05-31 08:29:51
2 1068
今天完成的事情:
1、找到一个更好的方式使用Cookie完成登录的验证,以及了解拦截器的使用。
在SpringMVC中如何使用Interceptor+Cookie实现在一定天数之内自动登录的功能。同时,如果校验失败则跳转到登录页面,在输入用户名、密码等完成登录之后又自动跳转到原页面。
1)DB设计:
这里设计了两张表,分别是user表和persistent_logins表。
create table test.user
(
id int auto_increment
primary key,
userName varchar(50) null,
password varchar(50) null,
createDate bigint null,
lastLoginTime bigint null
)
comment '用于登录注册';
create table test.persistent_logins
(
id int auto_increment primary key,
username varchar(50) not null comment '用户名',
series varchar(225) not null comment '用户使用密码登录成功之后生成的一个UUID值,同时用户端保存的cookie记录就是:DesUtils.encrypt(用户名+‘:’+此UUID值)',
token varchar(500) not null COMMENT ' 在拦截器中校验是否能够登录的密文,
其加密方式是:DesUtils.encrypt(用户名 + “_” + 密码 + “_” + 自动登录失效的时间点的字符串 + “_” + 自定义的salt)',
validTime bigint not null COMMENT '自动登录失效的时间,即:这个时间点之后只能重新用用户名、密码登录.
如果在重新登录时勾选了“30天内自动登录”则更新该用户在persistent_logins这个表中的自动登录记录'
)
comment '校验用户自动登录的表'
;
persistent_logins 是校验用户自动登录的表。
设计这张表的原因是看了许多网上的介绍cookie实现身份验证然后自动登录的文章,但他们基本是都是将用户名、密码、加盐字段拼接后进行 MD5 加密然后保存在 cookie中。虽然使用了MD5这种非对称加密方式,但将“密码”这类关键信息保存在客户端是不是不太好呢。
直到看到了一篇文章,将用户名、密码等关键信息加密之后的数据保存到数据库中,在用户的客户端cookie里只保存没有特殊含义的UUID值以及用户名。
明天计划的事情:
遇到的问题:
收获:
评论