弹簧安全运行与spring boot嵌入式服务器getUserPrincipal为null

时间:2016-11-01 08:55:34

标签: spring spring-security spring-boot

大家。我想问几天困扰我的问题。 当我使用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可用于获取用户信息。

spring-security documents

在5.1.1的标题之前。

当我用外部Tomcat 替换嵌入式JavaEE服务器时,我可以使用上述所有方法来获取当前登录用户。

谁能告诉我为什么?非常感谢你!!!

0 个答案:

没有答案