注销:deleteCookies(“ JSESSIONID”)不起作用

时间:2018-12-13 12:01:14

标签: spring spring-security spring-security-oauth2

我使用Spring Security对用户进行身份验证,我希望他们能够注销。我使用JWT令牌。我已经设置了:

.logout()
            .deleteCookies("JSESSIONID")
            .invalidateHttpSession(true) 
            .logoutSuccessHandler((new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK)))

但是不幸的是,这不起作用,并且在调用/ logout端点后,我仍然拥有JSESSIONID cookie。

enter image description here

我这样称呼它:

this.http.Get("http://localhost:8081/logout").subscribe()

有什么提示吗?

编辑:我试图编写自己的自定义logoutHandler:

public class MyLogoutSuccessHandler extends SimpleUrlLogoutSuccessHandler {

    @Override
    public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
            throws IOException, ServletException {

        Cookie[] cookies = request.getCookies();
        HttpSession session = request.getSession(false);
        if (session != null) {
            session.invalidate();
        }
        super.onLogoutSuccess(request, response, authentication);
    }
}

...

.logout()
//          .deleteCookies("JSESSIONID")
//          .invalidateHttpSession(true)
            .logoutSuccessHandler(new MyLogoutSuccessHandler())

但是会话和cookie始终为空(已使用断点检查)。这对我来说没有任何意义,如果它为null,为什么我仍然拥有JSESSIONID?

编辑:关于会话,我已经注意到:

  • 当我到达角形部分(localhost:4200)时,我没有会话cookie

  • 当单击“登录”并且在授权服务器前部重定向时,我获得了与授权服务器域(localhost:8081)关联的会话cookie,其路径为/ uua(这是授权服务器上下文-路径)

  • 当我提交登录表单,然后将我重定向回到有角度的部分时,会话cookie会更改(不同的ID),并且现在已与有角度的域相关联(localhost:4200),仍带有路径/ uua

  • 然后我会注销,在授权服务器上会调用/ logout端点,但是我仍然拥有会话cookie(这次ID不会更改)。

  • 然后我再次登录,我看到我已在授权服务器上重定向,并使用新令牌直接重定向回棱角部分,并且会话cookie仍然相同,但具有相同的ID

0 个答案:

没有答案