接下来我们看看具体怎么实现rememberMe功能
1.表单记住我选项
<%–
Created by IntelliJ IDEA.
User: dengp
Date: 2019/12/1
Time: 20:40
To change this template use File | Settings | File Templates.
–%>
<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>
<%@ taglib uri=“http://www.springframework.org/security/tags” prefix=“security”%>
security:csrfInput/
账号:
密码:
记住我
先测试一下,认证通过后,关掉浏览器,再次打开页面,发现还
《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》
【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享
要认证!为什么没有起作用呢? 这是因为remember me功能使用的过滤器RememberMeAuthenticationFilter默认是不开启的!
2.开启rememberMe
说明
:RememberMeAuthenticationFilter中功能非常简单,会在打开浏览器时,自动判断是否认证,如果没有则 调用autoLogin进行自动认证。
这样RememberMe就设置好了!
二、rememberMe的安全性
===============================================================================
记住我功能方便是大家看得见的,但是安全性却令人担忧。因为Cookie毕竟是保存在客户端的,很容易盗取,而且 cookie的值还与用户名、密码这些敏感数据相关,虽然加密了,但是将敏感信息存在客户端,还是不太安全。那么这就要提醒喜欢使用此功能的,用完网站要及时手动退出登录,清空认证信息。
此外,SpringSecurity还提供了remember me的另一种相对更安全的实现机制 :在客户端的cookie中,仅保存一个 无意义的加密串(与用户名、密码等敏感数据无关),然后在db中保存该加密串-用户信息的对应关系,自动登录 时,用cookie中的加密串,到db中验证,如果通过,自动登录才算通过。
三、持久化rememberMe信息
================================================================================
创建一张表,注意这张表的名称和字段都是固定的,不要修改
CREATE TABLE persistent_logins
(
username
VARCHAR (64) NOT NULL,
series
VARCHAR (64) NOT NULL,
token
VARCHAR (64) NOT NULL,
last_used
TIMESTAMP NOT NULL,
PRIMARY KEY (series
)
) ENGINE = INNODB DEFAULT CHARSET = utf8
然后将spring-security.xml中 改为