[英]Spring Security SecurityContextHolder.getContext().getAuthentication() returns null
[英]Spring Security: SecurityContextHolder.getContext().getAuthentication() returns null after user registering user and redirecting to after login page
用户成功注册后,我试图将用户重定向到登录页面后,并尝试从SecurityContextHolder.getContext()。getAuthentication()获取活动用户。 返回null。
这是当用户成功注册时我如何设置上下文
UsernamePasswordAuthenticationToken authenticatedUser = new UsernamePasswordAuthenticationToken(userDetails.getUsername(), userDetails.getPassword(), userDetails.getAuthorities());
authenticatedUser.setDetails(userDetails);
if(authenticatedUser.isAuthenticated()) {
SecurityContextHolder.getContext().setAuthentication(authenticatedUser);
}
然后我使用response.sendRedirect(url);将用户重定向到x页面。
在控制器方法中,我尝试将当前用户设置为
@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
}
}
我在控制台中看到的文本为“ this is null”。
在整个用户期间,如何从SecurityContext()保留当前用户/主体,直到用户注销。
我找到了解决方案。
问题在于该特定URI组的标签的pattern属性。
早先是/ path / *并且失败了。 我将其更改为/ path / **,并且有效。
如果有人可以在这两个模式匹配(/ *和/ **)之间进行解释,将很有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.