当我们的springboot应用程序获得由身份服务器创建的用户令牌的请求时,我们在SecurityFilterChain Bean中得到以下错误:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception java.lang.IllegalArgumentException: Failed to evaluate expression 'authentication.getPrincipal().getSubject() == #userId'
SecurityFilterChain Bean中的代码段:
.requestMatchers("/**/user/{userId}/**").access(
new WebExpressionAuthorizationManager(
"authentication.getPrincipal().getSubject() == #userId"
)
)
因为这个错误只出现在我们的实时系统上,而且它发生在filterChain中,所以我们很难调试这个错误。
有人知道SPEL的问题是什么吗?
版本:springboot 3.1.1 java 17 spring security 6.0.3
1条答案
按热度按时间aemubtdh1#
我们发现有些请求没有授权头。这导致了这个异常,因为主体是空的。