我们正在使用带有JWT令牌的Spring-boot 2.0.5
SecurityContextHolder.getContext().getAuthentication().getPrincipal()
返回String (Username)
代替CustomUserDetails
对象,该对象仅在WAR文件中的UserDetails
类中实现。
在大多数情况下,此问题仅在代码运行正常的情况下重复出现
以下是我们使用的唯一自定义过滤器,它在FilterSecurityInterceptor过滤器之后调用
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
CustomHttpServletRequestWrapper request = new CustomHttpServletRequestWrapper((HttpServletRequest) req);
if(request!=null && request.getHeader("Authorization")!=null && request.getHeader("Authorization").length()>7) {
CustomUserDetails user = (CustomUserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
}
}
应该返回用户详细信息对象
答案 0 :(得分:0)
信息不足,无法为您提供任何答案,很高兴知道:
SecurityContextHolder.getContext().getAuthentication()
返回了什么实例?答案 1 :(得分:0)
在我们的例子中,有两个同名的Bean引起了问题