在 Spring-Session (Redis) 和 Spring-security 中注销用户而不使会话无效?

Logout user in Spring-Session (Redis) and Spring-security without invalidating session?

在切换到 spring-session 之前 How to correctly logout user in spring security 工作正常。我们不想在用户注销后使会话失效。

但是在redis开始使用spring-session后,用户没有被注销。我现在需要使用 new SecurityContextLogoutHandler().logout(request, response, authentication);

这会导致会话失效。有没有办法在不使会话无效的情况下注销用户?

这似乎是 Spring 安全注销机制中的 bug。要解决此问题,您可以使用:

SecurityContextHolder.clearContext();

请注意解决您应避免调用的问题

SecurityContextHolder.getContext().setAuthentication(null);