2014-09-20 114 views
0

我是春季安全新手。我想爲兩種不同類型的用戶提供兩種不同的登錄表單。我有一個名爲/ admin的包,其中包含我的系統用戶主要項目和其他用戶的/ portal ./portal用戶將在他們的租戶上工作,並且不會了解/ admin的任何信息,反之亦然。每個用戶組都有自己的數據庫也。 在spring-security.xml中,我定義了兩個身份驗證管理器,但是當我從兩個登錄表單登錄時,它將轉到「AuthenticatingManager」,但正如我在xml文件中所述,對於/ portal用戶,它應該轉到PortalAuthenticatingManager。我該怎麼辦?或者我錯過了什麼?春季安全多重身份驗證管理器

<security:http use-expressions="true" pattern="/portal/**" authentication-manager-ref="portalAuthMgr" access-denied-page="/unauthorized.jsp"> 
    <form-login login-page="/plLogin.jsp" default-target-url="/portal/portal" /> 
    <security:intercept-url pattern="/plLogin.jsp" access="permitAll"/> 
<security:intercept-url pattern="/portal/**" access="hasRole('ROLE_PORTAL')" /> 
</security:http> 
<security:http authentication-manager-ref="adminAuthMgr" access-denied-page="/unauthorized.jsp"> 
    <intercept-url pattern="/admin/**" access="ROLE_ADMIN" /> 
<security:form-login login-page="/login.jsp" authentication-failure-handler-ref="authenticationFailureHandler"/> 
</security:http> 

<security:authentication-manager id="adminAuthMgr"> 
    <security:authentication-provider ref="produxAuthenticationProvider"/> 
</security:authentication-manager> 
<security:authentication-manager alias="portalAuthMgr"> 
    <security:authentication-provider ref="portalAuthenticationProvider"/> 
</security:authentication-manager> 

<beans:bean id="produxAuthenticationProvider" class="com.spring.AuthenticatingManager"> 
</beans:bean> 
<beans:bean id="portalAuthenticationProvider" class="com.spring.PortalAuthenticatingManager"> 
</beans:bean> 
+0

您需要重新修改縮進: – kapad 2015-07-29 08:04:15

回答

1

你的「門戶網站」登錄表單需要發佈與/portal/**開頭的URL,否則登錄請求將被第二過濾器鏈進行處理。如果您使用/portal/j_spring_security_check

請注意,您還可以使用form-login元素上的login-processing-url屬性來控制篩選器響應哪個URL。爲每個URL使用不同的URL將避免出現意外處理針對另一個請求的請求的問題。

+0

謝謝你的回答。我按你所說的做了,但是現在在嘗試從plLogin登錄後它不會觸發'AuthenticatingManager'或'PortalAuthenticatingManager'。我也添加了login-processing-url =「/ portal/**」,但它不起作用。當我將門戶登錄表單中的表單動作屬性更改爲action =「/ portal/j_spring_security_check」時,它會轉到'http :/ /本地主機:8083 /門戶/ j_spring_security_check'與一個空白的內容,而不是激發我的'PortalAuthenticatingManager'類。 – 2014-09-22 07:25:08