Spring Security OAuth2 - 仅匿名端点

时间:2015-02-21 19:09:07

标签: spring-security-oauth2

如何才能使端点仅对匿名用户可访问?我试过了

http
    .authorizeRequests()
    .regexMatchers(HttpMethod.POST, "^/users$")
    .anonymous()

http
    .authorizeRequests()
    .regexMatchers(HttpMethod.POST, "^/users$")
    .hasAnyAuthority("ROLE_ANONYMOUS");

但我总是收到以下消息:

An Authentication object was not found in the SecurityContext

如果重要,我的最后一条规则是

http
    .authorizeRequests()
    .anyRequest()
    .denyAll();

默认情况下禁止访问每个未配置的端点。

更新:根据Dave Syer的建议,我合并了同一条链中的每条规则,但我不断收到相同的消息。这些是我现在的规则:

http.authorizeRequests()
    .regexMatchers(HttpMethod.POST, "^/users$")
    .anonymous()
    .regexMatchers(HttpMethod.GET, "^/me$")
    .hasAnyAuthority("ROLE_ADMIN", "ROLE_USER")
    .anyRequest()
    .denyAll();

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

当您致电http.authorizeRequests()时,您重置了规则,因此通常每个配置只调用一次。我认为您只需要将您的匿名规则与anyRequest()的同一链上的authorizeRequests()合并。