我有一个具有各种终结点的基本Spring应用程序,以及一个登录页面,该登录页面是通过配置WebSecurityConfigurerAdapter的HttpSecurity定义的。

我有一个服务,可在我的应用程序中查找所有端点并收集有关它们的一些基本信息,这是通过自动装配RequestMappingHandlerMapping类并遍历不同的处理程序方法来实现的。

我想为WebSecurityCongigurer适配器定义的路径收集一些类似的信息。

例如,在configue方法中,如果有,请说:

http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                .and().authorizeRequests()
                 .antMatchers(HttpMethod.POST, "/login").permitAll()


我想从服务中收集信息:"/login"HttpMethod.POST。任何帮助将不胜感激!

最佳答案

我的帖子没有直接回答这个问题,因为我不知道这样做的方法。但是,有一种解决方法,这个想法值得尝试:

我建议您有一个映射源并动态设置antMatchers。该解决方案既配置适配器,又使映射源可供进一步使用(我建议将值本身保持不变)。

List<MatcherMapping> mappings = ....
for (MatcherMapping mapping: mappings ) {
    http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        .and().authorizeRequests()
              .antMatchers(mapping.getHttpMethod, mapping.getUrl).permitAll()
}


MatcherMapping只是一个简单的数据容器。

public final class MatcherMapping {

    private final HttpMethod httpMethod;
    private final String url;

    // constructor and getters
}


最终由您决定是使用服务获取数据还是直接获取数据都无关紧要。

08-05 11:39