如何在antMatchers中使用“包含”?

时间:2019-08-22 18:47:55

标签: spring spring-boot spring-security

我在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。

1 个答案:

答案 0 :(得分:1)

是的,始终可以通过实现RequestMatcher来实现自己的匹配逻辑。以下示例显示了匹配包含单词“ swagger”的请求URI(无查询参数):

http.authorizeRequests()
       .requestMatchers(req-> req.getRequestURI().contains("swagger")).permitAll()