다른 네임 스페이스를 가진 두 개의 폼 - 로그인을 만들고 싶습니다. 하나는 사용자 로그인 (네임 스페이스 기본값 "/")이고 다른 하나는 네임 스페이스 "/ admin"이있는 관리자 로그인입니다. 프로그램을 실행하면 User에 대한 form-login이 정상적으로 실행됩니다. 그러나 Admin 실행을위한 form-login은 실패합니다.스프링 보안에서 다른 네임 스페이스를 가진 다중 로그인 폼
이 내 파일 봄 보안입니다 :
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">
<http pattern="/login*" security="none" />
<http pattern="/admin/" security="none" />
<http pattern="/admin/**">
<intercept-url pattern='admin/**' access='ROLE_ADMIN' />
<access-denied-handler error-page="/user/403.jsp" />
<form-login login-page="/adminLogin" default-target-url="/adminAccess"
authentication-failure-url="/adminLogin?error" username-parameter="username"
password-parameter="password" />
<logout logout-success-url="/adminLogin?logout" />
<http-basic />
</http>
<http>
<intercept-url pattern="/user" access="ROLE_USER" />
<intercept-url pattern="/**" access="ROLE_USER,ROLE_ADMIN" />
<access-denied-handler error-page="/user/403.jsp" />
<form-login login-page="/login" default-target-url="/userAccess"
authentication-failure-url="/login?error" username-parameter="username"
password-parameter="password" />
<logout logout-success-url="/login?logout" />
</http>
<beans:bean id="daoAuthenticationProvider"
class="org.springframework.security.authentication.dao.DaoAuthenticationProvider">
<beans:property name="userDetailsService" ref="userDetailsService" />
</beans:bean>
<beans:bean id="authenticationManager"
class="org.springframework.security.authentication.ProviderManager">
<beans:property name="providers">
<beans:list>
<beans:ref local="daoAuthenticationProvider" />
</beans:list>
</beans:property>
</beans:bean>
<authentication-manager erase-credentials="false">
<authentication-provider user-service-ref="userDetailsService">
</authentication-provider>
</authentication-manager>
내가 관리자 (네임 스페이스 "/ 관리자")에 대한 양식 로그인에서 로그인 오류가 messeage "HTTP 상태 404 일이 생긴 -이 어떤 조치 네임 스페이스 [/ 관리자]와 액션 이름 [j_spring_security_check] 컨텍스트 경로 [/ 자바 프레임 워크]와 관련된에 대한 매핑되지 않습니다 "
내 web.xml 파일의 차 필터 :.
0 내 struts.xml 파일에조치 :
<package name="default" namespace="/" extends="struts-default">
<action name="login">
<result>USER_LOGIN_SPRING_SECURITY</result>
</action>
<action name="userAccess" class="springAdminAction" method="execute">
<result name="success">USER_SPRING_SECURITY</result>
</action>
패턴
admin/**
같은
<package name="admin" namespace="/admin" extends="default-web-admin">
<action name="adminAccess" class="springAdminAction" method="execute">
<result name="success">ADMIN_SPRING_SECURITY</result>
</action>
<action name="adminLogin">
<result>ADMIN_LOGIN_SPRING_SECURITY</result>
</action>
예, 내가 생각하는 당신이 진정한 이야기하지만, 그것은 그 위의 오류가 해결되지 않습니다처럼
귀하의 로그 아웃 필터를 볼 수 있습니다. 내 문제는 네임 스페이스 "/ admin"과 스프링 보안의 동작을 매핑 할 수 없다는 것입니다. 네임 스페이스 기본값 인 "/"로 잘 작동합니다. – joseJv
@joseJv springSecurityFilterChain의 필터 순서가 web.xml의 struts 필터 앞에있는 경우 양식 작업은 struts 필터를 적용하기 전에 스프링 보안으로 처리해야합니다. 귀하의 URL이 봄 보안으로 구성된 패턴과 일치하면 봄 보안으로 처리됩니다. web.xml의 필터와 struct xml의 구성을 확인하십시오. 가능한 경우 스프링 보안에 대한 스택 추적을 게시하고 힌트를 제공해야합니다. – Wilson
web.xml의 주문 필터가 사실이라고 생각합니다. 왜냐하면, 나는 사용자 (네임 스페이스 "/")에 대한 양식 로그인을 가지고 있기 때문입니다. 잘 작동한다. Admin (네임 스페이스 "/ admin")에 대한 양식 로그인만으로 작동하지 않습니다. 내 스택 추적에 특별한 것이 표시되지 않습니다. "HTTP 상태 404 - 네임 스페이스 [/ admin]에 매핑 된 작업이없고 컨텍스트 경로 [/ Java-framework]와 연결된 작업 이름 [j_spring_security_check]이 있습니다." 내 스트럿을 위에서 확인합니까? 나를위한 봄 보안 파일 xml? – joseJv