gpt4 book ai didi

java - 如何使用 Spring Boot 设置 JSESSIONID cookie 的过期日期时间

转载 作者:行者123 更新时间:2023-11-30 05:51:06 36 4
gpt4 key购买 nike

我有一个基于 SpringBoot 的 Web 应用程序,并使用 Spring Security 进行登录和 Remember-Me,但是 Remember-Me 无法正常工作,并且在客户端和服务器之间没有交互 1 小时后会重置。

我已检查浏览器的 cookie 存储,记住我 cookie 已创建并且具有正确的到期日期(创建后 1 天)。第二个 cookie:JSESSION 的过期时间 = session。我认为这就是导致问题的原因。

+-------------+-----------+------+--------------------------------+
| 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 |
+-------------+-----------+------+--------------------------------+

这是我的“记住我”的 spring 安全配置:

.and()
.rememberMe()
.key("secretKey")
.tokenValiditySeconds(60*60*24)
.rememberMeParameter("remember-me");

我希望用户在选择“记住我”选项的情况下登录后,他/她在接下来的 24 小时内无需再次登录。那么是否有可能将这个 JSESSION 过期时间设置为等于 Remember-me cookie?我使用注释驱动的 Spring Boot

最佳答案

JSESSIONID 是保存您的 session ID 的 cookie。您不需要将 JSESSIONID 设置为 Remember-me。

该机制将能够在多个 session 中识别用户 - 因此首先要了解的是,记住我仅在 session 超时后启动。默认情况下,这种情况会在 30 分钟不活动后发生,但是 timeout can be configured在 web.xml 中。在 Spring boot 中,您可以在 this link 的帮助下配置超时。 .

记住我 cookie 包含以下数据:

  • 用户名 – 用于识别登录主体
  • expirationTime – 使 cookie 过期;默认为 2 周
  • MD5 哈希 - 前 2 个值 - 用户名和过期时间,加上密码和预定义 key

因此,记住用户凭据就足够了。当 session 过期或用户关闭浏览器时,JSESSIONID 将被删除。用户回来后,​​他将获得新的 session ID,而无需使用有效的记住我 cookie 再次登录。

关于java - 如何使用 Spring Boot 设置 JSESSIONID cookie 的过期日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53912476/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com