Spring Security - 覆盖配置文件中的默认配置

时间:2013-02-19 16:58:36

标签: spring-mvc spring-security

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

0 个答案:

没有答案