首页 > 解决方案 > 重置 Spring Boot 应用程序(JSESSIONID)中的所有会话?

问题描述

我正在对身份验证/注册流程进行故障排除,并且需要一种快速的方法来重置所有会话服务器端(没有curl或其他客户端注销魔术!)。

是否有 Spring Actuator 或 JMX 就绪端点来使所有会话无效?

我们使用 Tomcat 作为嵌入式服务器,如果它有帮助的话......

标签: spring-bootspring-securityspring-boot-actuator

解决方案


似乎有一个专用的 Spring Actuator Endpoint:

https://docs.spring.io/spring-boot/docs/current/reference/html/production-ready-features.html#production-ready-endpoints

sessions- 允许从 Spring Session 支持的会话存储中检索和删除用户会话。需要使用 Spring Session 的基于 Servlet 的 Web 应用程序。

https://docs.spring.io/spring-boot/docs/current/actuator-api/html/#sessions-retrieving

21.2. 检索单个会话

curl 'http://localhost:8080/actuator/sessions/4db5efcc-99cb-4d05' -i -X GET
curl 'http://localhost:8080/actuator/sessions/4db5efcc-99cb-4d05' -i -X DELETE

启用执行器端点的额外步骤:

management.endpoints.web.exposure.include:
  - env
  - health
  - info
  - sessions

推荐阅读