Spring Security: SecurityContextHolder.getContext(). GetAuthentication() возвращает нулевое значение после регистрации пользователя и перенаправления на страницу входа.

После успешной регистрации пользователя я пытаюсь перенаправить пользователя на страницу входа в систему и пытаюсь получить активного пользователя из SecurityContextHolder.getContext(). GetAuthentication(); который возвращает ноль.

Вот как я устанавливаю контекст, когда пользователь успешно зарегистрирован

 UsernamePasswordAuthenticationToken authenticatedUser = new UsernamePasswordAuthenticationToken(userDetails.getUsername(), userDetails.getPassword(), userDetails.getAuthorities());
 authenticatedUser.setDetails(userDetails);

 if(authenticatedUser.isAuthenticated()) {
        SecurityContextHolder.getContext().setAuthentication(authenticatedUser);
 }

Затем я перенаправляю пользователя на x страницу, используя response.sendRedirect(url);

В методе контроллера я пытаюсь текущего пользователя как

@RequestMapping("/<pattern>")
public @ResponseBody <method_name>(HttpServletRequest req,HttpServletResponse resp){
     Authentication auth = SecurityContextHolder.getContext().getAuthentication();
        if(auth==null){
            System.out.println("this is null");
        }
        else{
          // do something
        }
}

Я вижу текст в консоли как "это ноль".

Как получить удержание currentuser/Principal из SecurityContext() в течение периода пользователя, пока пользователь не выйдет из системы.

1 ответ

Я получил решение.

Проблема была с атрибутом pattern для тега для этой конкретной группы URI.

Ранее это был / путь / *, и он терпел неудачу. Я изменил его на / путь / **, и это сработало.

Было бы полезно, если бы кто-то мог объяснить между этими двумя сопоставлениями с образцом (/* и /**).

Другие вопросы по тегам