如何以编程方式检索所有蚂蚁匹配器URL

时间:2019-04-17 13:20:29

标签: java spring spring-security

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

我建议您有一个映射源并动态设置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
}

最终由您决定使用服务获取数据还是直接获取数据都没有关系。