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.
Ранее это был / путь / *, и он терпел неудачу. Я изменил его на / путь / **, и это сработало.
Было бы полезно, если бы кто-то мог объяснить между этими двумя сопоставлениями с образцом (/* и /**).