我在ZUUL应用程序中使用spring security,我的API控制对我的微服务的所有访问。使用过滤器可以允许每次登录指定路径,在过滤器内部,我有对象HttpSecurity,它通过“ .antMatchers”方法进行控制。
例如:
protected void configure(HttpSecurity http) throws Exception {
http.cors().and().csrf().disable();
http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
http.authorizeRequests()
.antMatchers("/**/swagger-ui.html").permitAll()
.antMatchers("/**/webjars/**").permitAll()
.antMatchers("/**/swagger-resources/**").permitAll()
.antMatchers("/**/csrf/**").permitAll()
.antMatchers("/**/v2/**").permitAll()
.antMatchers("/**/signin/**").permitAll()
.antMatchers("/**/microservice/chatws/**").permitAll()
.antMatchers("/**/microservice/*swagger*").permitAll()
.antMatchers("/**/microservice/swagger-resources/**").permitAll()
.antMatchers("/**/microservice/v2/**").permitAll()
.antMatchers("/**/microservice/webjars/**").permitAll()
.antMatchers("/**/microservice/csrf/**").permitAll()
.anyRequest()
.authenticated();
http.apply(new JwtTokenFilterConfigurer(jwtTokenProvider));
}
我希望允许所有在乞讨,中间或结尾在任何语言环境中都带有“ swagger”的路线。我在考虑类似String类的方法,如果包含“ swagger”,则允许allowAll。
答案 0 :(得分:1)
是的,始终可以通过实现RequestMatcher
来实现自己的匹配逻辑。以下示例显示了匹配包含单词“ swagger”的请求URI(无查询参数):
http.authorizeRequests()
.requestMatchers(req-> req.getRequestURI().contains("swagger")).permitAll()