Spring security access =“IS_AUTHENTICATED_ANONYMOUSLY,IS_AUTHENTICATED_FULLY,IS_AUTHENTICATED_REMEMBERED”

时间:2011-10-24 17:34:59

标签: spring-security

在回答here后,我试图在我的网站上允许公开页面,但它似乎不起作用。当它重定向到登录页面。但是,如果我更改为 filters = none ,则可以使用,并且页面可以查看而无需重定向。

我的appContext.xml看起来像这样(当它不起作用时),/MyPath相关部分:

<security:intercept-url pattern="/**" access="ROLE_USER" />
<security:intercept-url pattern="/Admin/**" access="ROLE_ADMIN" />
<security:intercept-url pattern="/MyPath/**" access="IS_AUTHENTICATED_ANONYMOUSLY, IS_AUTHENTICATED_FULLY, IS_AUTHENTICATED_REMEMBERED" />

这有效,但我需要安全功能,因此无法使用它:

<security:intercept-url pattern="/**" access="ROLE_USER" />
<security:intercept-url pattern="/Admin/**" access="ROLE_ADMIN" />
<security:intercept-url pattern="/MyPath/**" filters="none" />

1 个答案:

答案 0 :(得分:6)

假设您使用的是最新版本,如果您不需要匿名地告知用户“如何”进行身份验证,您可能会坚持使用更简单的匿名用户规范。

Here's a link to the doc section

除此之外,我认为你的问题是订购。订单确实很重要,您首先拥有最少限制的模式。试着转过身来。

  

您可以使用多个元素为不同的URL集定义不同的访问要求,但它们将按列出的顺序进行评估,并将使用第一个匹配项。所以你必须把最具体的比赛放在最上面。您还可以添加方法属性以限制与特定HTTP方法(GET,POST,PUT等)的匹配。如果请求与多个模式匹配,则无论排序如何,特定于方法的匹配都将优先。

来自here