如何才能使端点仅对匿名用户可访问?我试过了
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();
有什么建议吗?
答案 0 :(得分:0)
当您致电http.authorizeRequests()
时,您重置了规则,因此通常每个配置只调用一次。我认为您只需要将您的匿名规则与anyRequest()
的同一链上的authorizeRequests()
合并。