我有一个带有几个REST控制器的Spring Boot Web应用程序。它使用Spring Security进行基于表单的身份验证(1)
另外,应用程序正在读取存储的请求,并将其分派给自己。为此,我有一个自定义的Spring Dispatcher servlet和一个用于存储请求的过滤器链。调用时,它使Spring DispatcherServlet将HTTP请求分派到正确的REST控制器(2)
我想以一种无需身份验证(2)的方式来设置Spring安全性-也就是说,http请求来自应用程序本身。
有谁知道如何实现这一目标?
最佳答案
您可以创建自定义RequestMatcher
:
匹配HttpServletRequest
的简单策略。
用您的逻辑来决定是否应忽略该请求。
然后使用RequestMatcher
添加自定义AbstractRequestMatcherRegistry#requestMatchers
:
将RequestMatcher实例列表与AbstractConfigAttributeRequestMatcherRegistry
关联
到RequestMatcher
忽略的WebSecurity#ignoring
列表:
允许添加Spring Security应该忽略的RequestMatcher
实例。
在您的WebSecurityConfigurerAdapter#configure
方法中:
覆盖此方法以配置WebSecurity
。例如,如果您希望忽略某些请求。
例如:
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.requestMatchers(new MyInternalRequestMatcher());
}