Springboot SPEL在SecurityFilterChain Bean中抛出IllegalArgumentException

wlzqhblo  于 2023-10-20  发布在  Spring
关注(0)|答案(1)|浏览(106)

当我们的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

aemubtdh

aemubtdh1#

我们发现有些请求没有授权头。这导致了这个异常,因为主体是空的。

相关问题