我有一个具有各种终结点的基本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
}
最终由您决定是使用服务获取数据还是直接获取数据都无关紧要。