복붙노트

[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. ==============================

    1.기본적으로 로그 아웃 프로세스는 먼저 세션을 무효화하여 세션 관리를 트리거하여 잘못된 세션 페이지로 리디렉션합니다. invalidate-session = "false"를 지정하면이 동작이 수정됩니다.

    기본적으로 로그 아웃 프로세스는 먼저 세션을 무효화하여 세션 관리를 트리거하여 잘못된 세션 페이지로 리디렉션합니다. invalidate-session = "false"를 지정하면이 동작이 수정됩니다.

    <sec:logout logout-success-url="/logout" invalidate-session="false" 
    delete-cookies="JSESSIONID" />
    
  2. ==============================

    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 속성을 사용하지 마십시오. 희망이 도움이됩니다.

  3. 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