SpringSecurity - SecurityContextHolder возвращает ноль - PullRequest
0 голосов
/ 30 июня 2019

Я использую реагирующий / весенний отдых и делаю программный выход из системы. Вход в систему работает нормально, и когда пользователь выходит из системы, запрос отправляется на контроллер и выходит из системы. У меня проблема в том, что в методе выхода из системы внутри контроллера я получаю NULL из контекста безопасности. Похоже, старая сессия прошла. Как я могу получить / сохранить информацию о пользователе на SecurityContextHolder. Кроме того, я использую Spring-Redis для поддержания сеанса. После успешного входа в систему информация о сеансе сохраняется в Redis, но SecurityContext становится пустым.

Некоторые фрагменты кода (выход):

HttpSession session = request.getSession(false);
    //session is null
    final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
   // authentication.getName is null

    if (session != null) {
        session.invalidate();
        session.setMaxInactiveInterval(0);
    }
    SecurityContextHolder.clearContext();
    Cookie[] cookies = request.getCookies();
    if (cookies != null) {
        for (Cookie cookie : request.getCookies()) {
            if ("JSESSONID".equals(cookie.getName())) {
                cookie.setMaxAge(0);
                response.addCookie(cookie);
            }
        }
    }`

И httpCOnfig:

  http
        .authorizeRequests()
        .antMatchers("/api/user/**").hasAnyRole(ROLE_ADMIN, ROLE_REGISTERED_USER)
        .antMatchers("/api/admin/**").hasRole(ROLE_ADMIN)
        .antMatchers("/api/public/**").permitAll()
        .anyRequest().authenticated()
        .and()
        .csrf().disable()
        .cors()
        .and()
        .httpBasic();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...