8

我将以下 Java Config 与 Spring Security 一起使用:

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

基于此配置,所有请求都经过身份验证。当您在未经过身份验证的情况下点击控制器时,AnonymousAuthenticationFilter将为您创建一个 Authentication 对象username=anonymousUser, role=ROLE_ANONYMOUS

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

  1. @Secured("ROLE_ANONYMOUS")
  2. @Secured("IS_AUTHENTICATED_ANONYMOUSLY")

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

有人可以帮我理解为什么我们会收到此消息以及为什么ROLE_ANONYMOUS/IS_AUTHENTICATED_ANONYMOUSLY似乎无法使用此配置吗?

谢谢,
JP

4

1 回答 1

3

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

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

也可以看看:

于 2014-03-13T17:32:01.370 回答