发表于: 2017-05-31 08:29:51

2 1067


今天完成的事情:

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值以及用户名。


明天计划的事情:

 
遇到的问题:

 
收获:



返回列表 返回列表
评论

    分享到