Spring Security使用GET但不能使用其他方法

时间:2018-09-24 21:16:02

标签: java spring-boot spring-security

我的Spring REST服务具有以下安全适配器,以使用HTTP基本的HTTP身份验证。 现在,当我尝试将请求发送到任何GET HTTP端点时,该请求已成功授权和处理。但是所有其他HTTP方法都返回401。有什么想法吗?

@EnableWebSecurity
public class WebSecurityAdapter extends WebSecurityConfigurerAdapter {

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.inMemoryAuthentication()
        .withUser("user").password(passwordEncoder().encode("password")).roles("USER");
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http.authorizeRequests().antMatchers("/**").hasRole("USER").and().httpBasic();
}

@Bean
public PasswordEncoder passwordEncoder() {
    return new BCryptPasswordEncoder();
}
}

1 个答案:

答案 0 :(得分:0)

您有一个AuthenticationException,它是运行时异常。在这里Spring Security Authentication中了解它。 WebSecurity的默认配置,如此处HttpSecurity所示:

protected void configure(HttpSecurity http) throws Exception {
http
    .authorizeRequests()
        .anyRequest().authenticated()
        .and()
    .formLogin()
        .and()
    .httpBasic();
}

尝试将.anyRequest().authenticated()添加到您的代码中。