Spring Security Config不会跳过某些URL的身份验证

时间:2016-12-13 17:56:57

标签: java spring spring-mvc authentication spring-security

我已尝试过十几种不同的配置,但我无法让Spring Security执行我正在尝试的用例。 我希望安全性能够执行以下操作

  1. 在指定的网址上使用基本身份验证(/ api / service / **)

  2. 如果与所有其他网址一起发送,请勿验证基本身份验证

  3. 目前每当我向/ api / service / **之外的任何网址发送请求时,如果我发送基本身份验证令牌然后尝试对其进行身份验证,那么它的工作正常。我不希望所有其他网址完全忽略该令牌。有没有办法做到这一点?

        @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .csrf().disable()
            .authorizeRequests().antMatchers("/api/service/**").hasRole("ROLE_SERVICE")
            .and()
                .httpBasic().authenticationEntryPoint(authenticationEntryPoint)
            .and()
                .exceptionHandling().accessDeniedHandler(new RestAccessDeniedHandler())
            .and()
                .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
    }
    

    我还尝试添加.authorizeRequests().antMatchers("**").anonymous().authorizeRequests().antMatchers("**").permitAll(),但这些都没有完成。我也试过删除.httpBasic()但是没有进行验证。

    非常感谢任何帮助。

    使用:Spring Security 3.2.9.RELEASE和Spring MVC 3.2.13.RELEASE。

1 个答案:

答案 0 :(得分:-1)

使用此

.authorizeRequests()
         .antMatchers("/api/service/**").hasRole("ROLE_SERVICE")
         .anyRequest().permitAll()