【发布时间】:2013-04-03 16:54:11
【问题描述】:
我正在使用 Spring Security 3.1.2 此版本允许多个“http”标签。
我有一个应用程序,它有两个单独的登录页面,一个用于用户,另一个用于管理员。它们都将使用相同的身份验证管理器。
我已经按照以下方式构建了我的 spring-security.xml
<sec:http pattern="/loginForm.jsp" security="none"/>
<sec:http pattern="/loginForm2.jsp" security="none"/>
<sec:http auto-config="true">
<sec:intercept-url pattern="/login1*" access="ROLE_USER" />
<sec:form-login login-page="/loginForm.jsp" default-target-url="/login1"
authentication-failure-url="/loginForm.jsp?login_error=1" />
<sec:logout logout-success-url="/loginForm.jsp" />
</sec:http>
<sec:http auto-config="true">
<sec:intercept-url pattern="/login2*" access="ROLE_ADMIN" />
<sec:form-login login-page="/loginForm2.jsp" default-target-url="/login2"
authentication-failure-url="/loginForm2.jsp?login_error=1" />
<sec:logout logout-success-url="/loginForm2.jsp" />
</sec:http>
<sec:authentication-manager>
<sec:authentication-provider>
<sec:user-service>
<sec:user name="qwertyui" password="123456" authorities="ROLE_USER" />
<sec:user name="asdfghjk" password="123456" authorities="ROLE_USER" />
</sec:user-service>
</sec:authentication-provider>
</sec:authentication-manager>
但我收到此错误“通用匹配模式 ('/**') 在过滤器链中的其他模式之前定义,导致它们被忽略。请检查您的命名空间或 FilterChainProxy bean 配置中的排序”
如果我省略任何一个标签,它可以正常工作。
【问题讨论】: