Spring security如何允许匿名访问大多数限制某些操作的站点

Posted

技术标签:

【中文标题】Spring security如何允许匿名访问大多数限制某些操作的站点【英文标题】:Spring security how to allow anonymous access to most of site restricting certain actions 【发布时间】:2012-05-31 15:15:36 【问题描述】:

我希望有与 Stack Overflow 类似的行为,您可以在其中匿名查看大部分站点,并且只需要用户角色/身份验证即可执行某些操作。基本上是匿名读取,写入受限。 我希望我能做的是指定匿名访问我的 security-config.xml 并注释需要适当用户角色的各种方法。 配置:

<global-method-security secured-annotations="enabled" />

<http auto-config='true'>
    <intercept-url pattern="/**" access="IS_AUTHENTICATED_ANONYMOUSLY" />
    <http-basic />
</http>

方法声明

    @Secured("ROLE_USER")
    @RequestMapping(value = "/estabID", method = RequestMethod.GET)
    public ModelAndView getEstablishmentPage(@PathVariable String estabID)  .... 

但是,系统不会提示我使用此配置提供基本身份验证凭据。如果我将配置中的访问属性更改为 ROLE_USER 一切都按预期工作,我将面临身份验证挑战。

默认情况下,通过经过身份验证的用户对某些操作进行匿名访问的最佳方式是什么?

【问题讨论】:

听起来好像没有应用全局方法安全性。您能否打开调试器并查看它是否正在通过 MethodSecurityInterceptor? 您很可能遇到了this FAQ 中提到的问题。您还会发现之前在 SO 上讨论过它。 @luke 你说得对,这正是问题所在,你想将其添加为答案以便我接受? 【参考方案1】:

正如 Luke Taylor 在他的评论中提到的,问题已通过关注 this FAQ 得到解决

【讨论】:

以上是关于Spring security如何允许匿名访问大多数限制某些操作的站点的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security仅允许匿名访问

如何保护 Spring Security 中受 IP 地址限制的匿名访问?

Spring Security OAuth2 JWT 匿名令牌

Spring Security - 访问被拒绝(用户不是匿名的)spring-security-core-4.0.3.RELEASE

Spring Security中permitAll()和anonymous()的区别

Spring Boot Security PreAuthenticated 场景,匿名访问