首页 > 网站的“记住我”在后端怎么实现?springMVC

网站的“记住我”在后端怎么实现?springMVC

当在登录界面勾选了那个“记住我”多长时间这个选项,在后端怎么做呢?我在用springMVC的。


后端的记住我其实就是自动登陆,用户选择自动登陆后把用户名(或者可以唯一标识用户的字符串)在服务器用秘钥加密,然后和未加密的字符串一起保存在cookie中,相当于给该浏览器发了一个可以不提供用户密码就登陆的认证。当收到一个没有session的连接时,就检验cookie里的标识字符串和加密后的字符串是否匹配,是的话就说明这是本服务器提供的登陆认证,然后就可以根据那个唯一标识符从数据库里提取用户信息放入session中了

给你举个例子吧

假设你一个用户叫"seeyoulater",我服务器端用一个只有我自知道的秘钥("ThisIsMyKey")用SHA-2加密,假设变成了"wEFJ8aefj90F9WFEjf2390-",这两个字符串都保存到cookie里,像下面这样

username:"seeyoulater",
username_hash:"wEFJ8aefj90F9WFEjf2390-"

需要用cookie验证的时候只要把username同样的秘钥和同样的加密方式再计算一遍,发现与username_hash匹配,就说明登陆正确。这个秘钥是所有用户公用的,但是只有你自己知道,其他人就算知道你用的算法只要不知道你的秘钥就不能仿造username_hash。

假如哪一天你觉得你的秘钥可能泄露了,就把服务器使用的这个秘钥换一下,比如换成“MyKeyChanged",虽然算法没变,但是秘钥变了,以前选择了”记住我“的用户还用相同的用户名就无法通过验证了,于是所有人就都需要重新登陆了


用cookie 啊


cookie...

【热门文章】
【热门文章】