我的申请遇到了一些问题。我们使用 Spring Boot 2.4.10 和 Spring Security 5.4.8。我们使用 cookie 与应用程序交互。
我们有一个存储在src/main/resources
其中的前端应用程序,其中包括连接到/api/v1/notification
.
application.properties
文件:
# cookie-related settings
server.servlet.session.cookie.name=mySessionCookie
server.servlet.session.cookie.path=/
server.servlet.session.cookie.http-only=true
server.servlet.session.cookie.secure=true
Run Code Online (Sandbox Code Playgroud)
# cookie-related settings
server.servlet.session.cookie.name=mySessionCookie
server.servlet.session.cookie.path=/
server.servlet.session.cookie.http-only=true
server.servlet.session.cookie.secure=true
Run Code Online (Sandbox Code Playgroud)
当没有用户登录时,前端会尝试定期访问 websocket 端点以打开连接。
第一个api/v1/notification
结束重定向到/error
端点,该端点返回HttpServletResponse
带有“Set-Cookie”标头(我认为这可能是在第一个请求中设置的匿名 cookie?)和401状态。我无法改变这种行为。
以下请求api/v1/notification
在标头中使用此 cookie(当用户未登录时)。这些请求也会重定向到/error
端点,该端点每次都会返回HttpServletResponse
401状态,但这里不包含“Set-Cookie”标头。
用户使用授权标头登录后,响应将设置正确的 cookie 并在以下请求中使用。
问题是,有时设置的 cookie 会突然再次更改为无效 cookie,并且使用此新的无效 cookie 完成的后续请求会重定向到登录页面。
检查代码后,似乎发生了一个旧api/v1/notification
请求(在登录请求之前),其中包含无效的 cookie(匿名请求,在登录之前存在)。
该请求被重定向到/error
端点:这里再次HttpServletResponse
出现401状态,并且包含一个 Set-Cookie …
java spring-security unauthorized session-cookies spring-boot