我正在尝试重构我的应用程序,以添加在某些浏览器选项卡中运行应用程序的功能。 我想为每个选项卡/窗口(针对同一用户)创建一个不同的会话,并为每个会话创建一个docker容器。到目前为止,一切正常。当我从一个标签退出时,应用会停止自己的泊坞窗容器,但会清除所有会话的身份验证。 您是否知道如何防止清除此身份验证?
这是我"配置"的一部分。方法:
@Override
protected void configure(HttpSecurity http) throws Exception {
/.../
http
.formLogin()
.loginPage("/login")
.and()
.logout()
.logoutRequestMatcher(new AntPathRequestMatcher("/logout"))
.logoutSuccessHandler(logoutHandler)
.logoutSuccessUrl("/login")
.clearAuthentication(false);
/.../
}
LogoutHandler:
@Component
公共类LogoutHandler扩展SecurityContextLogoutHandler实现LogoutSuccessHandler {
@Inject
UserService userService;
@Inject
Environment environment;
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
if (authentication != null) {
String sessionId = ((WebAuthenticationDetails) authentication.getDetails()).getSessionId();
if (sessionId != null) {
userService.logout(sessionId);
response.sendRedirect(ShinyProxyApplication.getContextPath(environment));
}
}
}
}