Java Spring security如何允许匿名访问限制某些操作的大多数站点
我希望有一个类似于Stack Overflow的行为,您可以匿名查看大多数站点,并且只需要用户角色/身份验证来执行某些操作。基本上是匿名读取和受限写入。 我希望我能做的是指定匿名访问我的security-config.xml并注释需要适当用户角色的各种方法。 配置: 但是,对于此配置,系统不会提示我输入基本身份验证凭据。如果我将配置中的access属性更改为ROLE_USER,则一切正常,我将面临一个auth挑战Java Spring security如何允许匿名访问限制某些操作的大多数站点,java,spring,jakarta-ee,spring-mvc,spring-security,Java,Spring,Jakarta Ee,Spring Mvc,Spring Security,我希望有一个类似于Stack Overflow的行为,您可以匿名查看大多数站点,并且只需要用户角色/身份验证来执行某些操作。基本上是匿名读取和受限写入。 我希望我能做的是指定匿名访问我的security-config.xml并注释需要适当用户角色的各种方法。 配置: 但是,对于此配置,系统不会提示我输入基本身份验证凭据。如果我将配置中的access属性更改为ROLE_USER,则一切正常,我将面临一个auth挑战 默认情况下,对于某些操作,使用经过身份验证的用户进行匿名访问的最佳方式是什么?正如
默认情况下,对于某些操作,使用经过身份验证的用户进行匿名访问的最佳方式是什么?正如Luke Taylor在评论中提到的那样,问题是通过以下方式解决的听起来好像没有应用全局方法安全性。您能否打开调试器,看看它是否正在遍历MethodSecurityInterceptor?很可能您遇到了本文中所述的问题。你也会发现之前讨论过这个问题。@luke你是对的,这正是问题所在,你想把它作为一个答案添加进来,让我接受吗?
<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) { .... }