[SPRING] 스프링 보안 : 성공적인 로그 아웃시 logout-success-url 대신 invalid-session-url로 리디렉션
SPRING스프링 보안 : 성공적인 로그 아웃시 logout-success-url 대신 invalid-session-url로 리디렉션
나는 Spring Security 3.0.2로 login-logout 시스템을 구현했다. 그러나이 모든 것에 대해서는 괜찮지 만, invalid-session-url 속성을 가진 세션 관리 태그를 추가 한 후, 로그 아웃시 Spring은 항상 유효하지 않은 logout-success-url 대신에 -session-url을 사용하십시오.
이 문제를 피할 수있는 방법이 있습니까?
이것은 내 구성입니다.
<http use-expressions="true" auto-config="true">
[...some intercept-url's...]
<form-login login-page="/login" authentication-failure-url="/login?error=true"
login-processing-url="/login-submit" default-target-url="/home"
always-use-default-target="true" />
<logout logout-success-url="/home?logout=true" logout-url="/login-logout" />
<session-management invalid-session-url="/home?invalid=true" />
</http>
고마워.
해결법
-
==============================
1.기본적으로 로그 아웃 프로세스는 먼저 세션을 무효화하여 세션 관리를 트리거하여 잘못된 세션 페이지로 리디렉션합니다. invalidate-session = "false"를 지정하면이 동작이 수정됩니다.
기본적으로 로그 아웃 프로세스는 먼저 세션을 무효화하여 세션 관리를 트리거하여 잘못된 세션 페이지로 리디렉션합니다. invalidate-session = "false"를 지정하면이 동작이 수정됩니다.
<sec:logout logout-success-url="/logout" invalidate-session="false" delete-cookies="JSESSIONID" />
-
==============================
2.로그 아웃 태그의 logout-url 속성과 세션 관리의 invalid-session-url 속성을 혼동하지 마십시오.
로그 아웃 태그의 logout-url 속성과 세션 관리의 invalid-session-url 속성을 혼동하지 마십시오.
후자는 로그 아웃 작업을 실행하는 URL이고 전자는 로그 아웃 작업을 수행 할 때 전달되는 URL입니다.
즉, 로그 아웃 버튼을 만들 때 해당 버튼의 URL은 logout-url 값이됩니다. 이제 로그 아웃이 완료되면 스프링 보안이 기본적으로 기본 애플리케이션의 루트 앱 경로 (예 : http : // yourserver : yourport / yourwebapp /)를 렌더링합니다. 이 경로는 invalid-session-url로 대체됩니다. 따라서 로그 아웃하면 거기로 전달됩니다.
요약하면, 당신이 요구하는 행동을 원하지 않는다면 invalid-session-url 속성을 사용하지 마십시오. 희망이 도움이됩니다.
from https://stackoverflow.com/questions/2601013/spring-security-redirect-to-invalid-session-url-instead-of-logout-success-url-o by cc-by-sa and MIT license