выход из системы: deleteCookies ("JSESSIONID") не работает - PullRequest
0 голосов
/ 13 декабря 2018

Я использую Spring Security для аутентификации своих пользователей и хотел бы, чтобы они могли выйти из системы.Я использую токены JWT.Я установил:

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

Но, к сожалению, это не работает, и после вызова / выхода из системы у меня все еще есть файл cookie JSESSIONID.

enter image description here

Я называю это на угловой стороне следующим образом:

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

Любые советы?

Редактировать : Я пытался написать свой собственный выход из системыHandler:

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 всегда равны нулю (проверяется с помощью точек останова).Это не имеет никакого смысла для меня, если это ноль, почему у меня все еще есть JSESSIONID?

Редактировать : О сеансе я заметил, что:

  • когда я прихожу на угловую часть (localhost: 4200), я не получаю сессионный cookie

  • , когда нажимаю «логин» и меня перенаправляют на сервер авторизациипередняя часть, я получаю куки сеанса, связанные с доменом сервера авторизации (localhost: 8081) с путем / uua (который является контекстным путем сервера авторизации)

  • , когда я отправляю форму входа изатем я перенаправлен обратно в угловую часть, файл cookie сеанса изменяется (другой идентификатор) и теперь связан с угловым доменом (localhost: 4200), все еще с путем / uua

  • затем я нажимаю на выход из системы, конечная точка / logout вызывается на сервере авторизации, но у меня все еще есть файл cookie сеанса (идентификатор не изменяется в этот раз).

  • затем я нажимаю навойдите еще раз, я вижу, что я перенаправлен на авторизациюсервер и напрямую перенаправлен обратно в угловую часть с новым токеном, а cookie сеанса остается прежним, с тем же идентификатором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...