【问题标题】:Reset all sessions in Spring Boot app (JSESSIONID)?重置 Spring Boot 应用程序(JSESSIONID)中的所有会话?
【发布时间】:2021-02-21 09:06:39
【问题描述】:

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

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

如果有帮助,我们将 Tomcat 用作嵌入式服务器...

【问题讨论】:

  • (1) Tomcat StandardManager MBean 可用于在每个会话上调用getActiveSessions,然后调用expireSession。或 (2) Spring Security 的 'SessionRegistry' 可用于获取所有主体的会话,然后在每个会话上调用 removeSessionInformation

标签: spring-boot spring-security spring-boot-actuator


【解决方案1】:

似乎有一个专用的 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

启用 Actuator 端点的额外步骤:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 2017-02-27
    • 2019-01-30
    • 2018-04-07
    • 1970-01-01
    • 2017-03-16
    • 2021-10-19
    相关资源
    最近更新 更多