【问题标题】:Browsersession timeout浏览器会话超时
【发布时间】:2018-09-19 21:05:06
【问题描述】:
对不起,奇怪的标题,但我不知道我的问题出在哪里。
我正在开发一个受 Spring Security 保护的 Spring-Boot 应用程序。它通过一个名为 JSESSIONID 的 cookie 来识别用户,该 cookie 在“会话”结束时过期(我不知道会话是什么意思。)
我有一些用户登录,使用该应用程序几分钟,让浏览器选项卡打开几个小时并尝试重用该应用程序,但他们不再被服务器识别并且必须重新验证。
关于问题的根源,我有两个想法。
1234563 /p>
cookie 仍然包含在请求中,但后端忘记了该会话(可能是因为可配置的超时)
我回家了,你可以帮我找出问题所在,最好的办法是对其进行调整。
【问题讨论】:
标签:
tomcat
spring-boot
firefox
spring-security
session-cookies
【解决方案1】:
根据我从您的问题中了解到的情况,我认为您需要在 spring-boot 应用程序中配置会话管理。
Remember-me 身份验证是一种在会话之间记住用户身份的解决方案。当用户使用 remember-me 选项登录到应用程序时,Spring Security 向浏览器发送一个 cookie。此 cookie 在浏览器端存储特定时间段。下次用户登录应用时,Spring Security 会检查并验证存储的 cookie,如果 cookie 有效则自动登录。
Spring Security 提供了两种实现 remember-me 的方法 -
基于哈希的令牌方法 - 在这种方法中,用户名、过期时间、密码和私钥被哈希并作为令牌发送到浏览器。
持久令牌方法 - 在这种方法中,使用数据库或其他持久存储机制来存储生成的令牌。
尝试谷歌如何实现这些,你会得到大量的资源。
还有一点,您还需要在 application.properties 中设置会话超时属性并根据您的要求进行配置。
server.session.timeout=# time in seconds