在回答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" />
答案 0 :(得分:6)
假设您使用的是最新版本,如果您不需要匿名地告知用户“如何”进行身份验证,您可能会坚持使用更简单的匿名用户规范。
Here's a link to the doc section
除此之外,我认为你的问题是订购。订单确实很重要,您首先拥有最少限制的模式。试着转过身来。
您可以使用多个元素为不同的URL集定义不同的访问要求,但它们将按列出的顺序进行评估,并将使用第一个匹配项。所以你必须把最具体的比赛放在最上面。您还可以添加方法属性以限制与特定HTTP方法(GET,POST,PUT等)的匹配。如果请求与多个模式匹配,则无论排序如何,特定于方法的匹配都将优先。
来自here