Context是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.
此外,我们不能使用在Spring 3.2中引入的否定配置文件(即profile="!admin"
)功能。
理想情况下,解决方案应该是纯粹的Spring配置。
编辑:向第二个安全添加了缺少的use-expressions =“true”:http