按会话ID注销,不删除身份验证

时间:2017-11-24 10:10:24

标签: java spring spring-boot

我正在尝试重构我的应用程序,以添加在某些浏览器选项卡中运行应用程序的功能。 我想为每个选项卡/窗口(针对同一用户)创建一个不同的会话,并为每个会话创建一个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));
        }
    }

}

}

0 个答案:

没有答案