Я использую Spring Security для аутентификации своих пользователей и хотел бы, чтобы они могли выйти из системы.Я использую токены JWT.Я установил:
.logout()
.deleteCookies("JSESSIONID")
.invalidateHttpSession(true)
.logoutSuccessHandler((new HttpStatusReturningLogoutSuccessHandler(HttpStatus.OK)))
Но, к сожалению, это не работает, и после вызова / выхода из системы у меня все еще есть файл cookie JSESSIONID.
Я называю это на угловой стороне следующим образом:
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 сеанса остается прежним, с тем же идентификатором.