上下文是 Spring 3.1(我们使用 Spring MVC 和 Spring Security)。
我们正在尝试做的是仅在admin
配置文件处于活动状态时才可用的管理页面。使用 Spring Security,我们尝试了类似的方法:
<security:http use-expressions="true" entry-point-ref="entryPointDenied">
<security:intercept-url pattern="/admin/**" access="denyAll" />
</security:http>
<beans profile="admin">
<security:http use-expressions="true">
<security:intercept-url pattern="/admin/**" access="permitAll" />
<sec:form-login/>
</security:http>
</beans>
但这不起作用,因为我们无法覆盖security:http
定义(我们尝试使用该http@name
属性)。所以通过上面的配置,我们得到
Caused by: java.lang.IllegalArgumentException: A universal match pattern ('/**') is defined before other patterns in the filter chain, causing them to be ignored.
此外,我们不能使用profile="!admin"
Spring 3.2 中引入的否定配置文件(ie)特性。
理想情况下,解决方案应该是纯 Spring 配置。
编辑:将缺少的 use-expressions="true" 添加到第二个安全性:http