大家。我想问几天困扰我的问题。 当我使用Spring Security与Spring Boot嵌入式服务器时。我想通过 HttpServletRequest.getUserPrincipal()获取当前登录用户。但结果是 null 。
@RequestMapping("/user/index")
public String userIndex(Principal principal, Authentication authentication, HttpServletRequest request) {
System.out.println("principal " + principal.getName());
System.out.println("authentication " + authentication.getName());
Authentication authenticationx = SecurityContextHolder.getContext().getAuthentication();
System.out.println("SecurityContextHolder " + authenticationx.getName());
System.out.println("request : " + request.getUserPrincipal());
// can't get the user with the embedded server
return "user/index";
}
Principal和Authentication对象可用于获取当前用户!!!,但请求对象不能。结果为null。 spring-security的文档指出 request.getUserPrincipal()的api可用于获取用户信息。
在5.1.1的标题之前。
当我用外部Tomcat 替换嵌入式JavaEE服务器时,我可以使用上述所有方法来获取当前登录用户。
谁能告诉我为什么?非常感谢你!!!