提问者:小点点

关于Spring Security匿名访问使用Java配置的困惑


我正在使用以下Java使用Spring Security进行配置:

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

基于此配置,所有请求都经过身份验证。当您在未通过身份验证的情况下访问控制器时,匿名身份验证过滤器将为您创建一个身份验证对象,用户名=匿名用户,角色=ROLE_ANONYMOUS。

我正在尝试提供对特定控制器方法的匿名访问,并尝试使用以下每种方法:

  1. @安全("ROLE_ANONYMOUS")
  2. @安全("IS_AUTHENTICATED_ANONYMOUSLY")

当调用控制器方法时,会给出以下响应:"HTTP状态401-访问此资源需要完全身份验证"

有人能帮我理解为什么我们会收到这个消息,为什么ROLE_ANONYMOUS/IS_AUTHENTICATED_ANONYMOUSLY似乎不能使用这个配置?

谢谢,
JP


共1个答案

匿名用户

您的安全配置阻止了所有未经身份验证的请求。您应该允许访问控制器

.antMatchers("/mycontroller").permitAll()

另见:

  • http://spring.io/blog/2013/07/03/spring-security-java-config-preview-web-security/