繁体   English   中英

春季安全性:用户注册用户并在登录页面后重定向到后,SecurityContextHolder.getContext()。getAuthentication()返回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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM