+-
java – Spring Security request.getUserPrincipal()始终为null
在我们的应用程序中观察到一个非常奇怪的情况(具有所有默认BOM依赖性的 Spring Boot 1.5.6):您可以完美地登录(使用AbstractPreAuthenticatedProcessingFilter),但这仍然会使请求中的Principal为null!即request.getUserPrincipal()为null,而SecurityContextHolder.getContext().getAuthentication()则不是!

这又会影响我们的健康端点敏感的能力:它使用Principal(参见HealthMvcEndpoint.exposeHealthDetails(HttpServletRequest,Principal)),它由ServletRequestMethodArgumentResolver注入,后者又从请求中获取它…

看起来我错过了一些简单的东西,但仍然无法找到它:(

最佳答案
因此,在创建一个新的Spring Boot应用程序并将其调试到它的内部之后,我发现没有人真正将Principal设置为请求.它是Spring将它包装到另一个使用Spring的SecurityContext进行上述操作(以及其他一些方法).这个包装是由SecurityContextHolderAwareRequestFilter完成的,默认情况下是这样(参见HttpSecurity.servletApi())…

但有人已禁用我们项目的默认Spring Security配置,因此过滤器不存在!

点击查看更多相关文章

转载注明原文:java – Spring Security request.getUserPrincipal()始终为null - 乐贴网