我有一个带有几个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());
}

09-25 20:16