Spring Security[3.1.0] public(unprotected)endpoints

nukf8bse  于 2023-06-23  发布在  Spring
关注(0)|答案(2)|浏览(117)

我正在使用spring 3.1.0,我希望能够访问一些路由而无需身份验证。但是,在使用下面的代码后,浏览器会打开一个小的登录窗口,我需要在其中添加用户名和密码。

@Bean
  public SecurityFilterChain filterChain(final HttpSecurity http) throws Exception {
    http
        .authorizeHttpRequests((requests) -> requests
            .requestMatchers("/login", "/home").permitAll()
            .anyRequest().authenticated()
        )
        .httpBasic(withDefaults())
        .anonymous(a -> a.disable());
    return http.build();
  }

这是我使用spring security 2.x时代码的外观。如何使用spring 3.1.0迁移下面的代码?

@Override
    protected void configure(HttpSecurity http) throws Exception {
        super.configure(http);
        http
                .authorizeRequests()
                .antMatchers(HttpMethod.GET, "/login", "/home").permitAll()
    }
ttcibm8c

ttcibm8c1#

我有白名单/不安全的一些 swagger 的端点以前使用下面的代码,这应该为您工作。如果上面的类有多个Bean,还要确保设置了此Bean SecurityFilterChain的优先级。

@Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws Exception {
        httpSecurity.csrf().disable().authorizeHttpRequests(auth -> {
            auth.requestMatchers("/v3/**", "/swagger-ui/**").permitAll();
            auth.requestMatchers("/login", "/home").permitAll();
            auth.anyRequest().authenticated();
        }).httpBasic();
        return httpSecurity.build();
    }
eqfvzcg8

eqfvzcg82#

如果它扩展了WebSecurityConfigurerAdapter,请尝试将其添加到代码中。

@Override
public void configure(WebSecurity web) {
    web.ignoring()
            .antMatchers("/login")
            .antMatchers("/home");
}

相关问题