Spring Security: при успешном выходе из системы перенаправьте на неверный-сеанс-URL вместо logout-success-url - PullRequest
13 голосов
/ 08 апреля 2010

Я реализовал систему входа и выхода из системы с помощью Spring Security 3.0.2, все хорошо, но с одной стороны: после добавления тега управления сеансом с атрибутом invalid-session-url, при выходе Spring всегда перенаправляет меня по недействительному URL-адресу сеанса вместо logout-success-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>

Большое спасибо.

Ответы [ 2 ]

7 голосов
/ 03 января 2013

По умолчанию процесс выхода из системы сначала аннулирует сеанс, следовательно, запускает управление сеансом для перенаправления на страницу недопустимого сеанса. Указав invalidate-session = "false" исправит это поведение.

<sec:logout logout-success-url="/logout" invalidate-session="false" 
delete-cookies="JSESSIONID" />
4 голосов
/ 16 июля 2010

Не путайте атрибут logout-url в теге выхода из системы с атрибутом invalid-session-url из сеанса-управления.

Последний - это URL-адрес для выполнения действия выхода из системы, в то время как первый - это URL-адрес, перенаправляемый при выходе из системы.

Другими словами, при создании кнопки выхода из системы URL-адрес этой кнопки будет равен logout-url. Теперь, когда выход из системы завершен, Spring Security по умолчанию будет отображать путь к корневому приложению основного приложения, т.е. http://yourserver:yourport/yourwebapp/. Этот путь переопределен invalid-session-url. Таким образом, при выходе вы будете перенаправлены туда.

Подводя итог, если вы не хотите запрашиваемого поведения, не используйте атрибут invalid-session-url. Надеюсь, это поможет.

...