我有一个基于SpringBoot的Web应用程序,并且使用Spring Security进行登录和“记住我”,但是“记住我”无法正常工作,并且在客户端和服务器之间没有交互1小时后便会重置。
我已经检查了浏览器的cookie存储,创建了“记住我” cookie,并具有正确的到期日期(创建后1天)。第二个cookie:JSESSION具有到期=会话。而且我认为这是造成问题的原因。
+-------------+-----------+------+--------------------------------+
| Name | Domain | Path | Expires on |
+-------------+-----------+------+--------------------------------+
| JSESSIONID | 127.0.0.1 | / | session |
| remember-me | 127.0.0.1 | / | Tue, 25 Dec 2018 10:28:22 GMT |
+-------------+-----------+------+--------------------------------+
这是我为我记住的春季安全配置:
.and()
.rememberMe()
.key("secretKey")
.tokenValiditySeconds(60*60*24)
.rememberMeParameter("remember-me");
我希望一旦用户选择了“记住我”选项后登录,他/她将在接下来的24小时内无需再次登录。那么是否有可能将此JSESSION到期时间设置为等于“记住我的Cookie”?我使用注释驱动的Spring Boot
答案 0 :(得分:1)
JSESSIONID
是保存会话ID的Cookie。您无需将JSESSIONID
的到期时间设置为“记住我”。
该机制将能够识别多个会话中的用户-因此首先要了解的是“记住我”仅在会话超时后才启动。默认情况下,这种情况在闲置30分钟后发生,但在web.xml中为timeout can be configured。在Spring Boot中,您可以借助this link来配置超时。
“记住我” cookie包含以下数据:
因此,记住用户凭据就足够了。会话期满或用户关闭浏览器时,JSESSIONID
将删除。用户回来后,他将获得新的会话ID,而无需使用有效的“记住我的Cookie”再次登录。