2015-08-20 8 views
0

У меня возникла проблема с выходом из приложения после окончания сеанса. Я настроил выход из системы URL:Выход из системы безопасности после таймаута сеанса

<security:logout logout-url="/logout" logout-success-url="/" delete-cookies="JESSIONID"/> 

и у меня есть форма выхода из системы:

<form action="#" th:action="@{/logout}" method="POST"> 
    <input type="submit" th:value="#{btn.logout}"/> 
</form> 

Формы тег добавляет параметр CSRF и ведение журнала работ хорошо, пока сессия все еще активна. Но если я запишу в приложение, оставьте его достаточно открытым для завершения сеанса, а затем нажмите кнопку выхода из системы. Я получаю сообщение об ошибке: HTTP-статус 405 - метод запроса «POST» не поддерживается

Мне все еще нравится чтобы сохранить подтверждение csrf и заставить его работать как запрос POST.

+0

Я не понимаю, почему у вас есть метод = «сообщение» для формы выхода? – smoggers

+0

Spring security требует [POST по умолчанию, если csrf включен] (http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#csrf-logout). См. Ответ Роба для примера, если вам нужна поддержка выхода из GET: http://stackoverflow.com/a/20356111/2264997 – ikumen

+0

Возможный дубликат [Spring Security 3.2.0RC2 только для выхода из системы?] (Http://stackoverflow.com/questions/20333176/spring-security-3-2-0rc2-logout-url-post-only) – ikumen

ответ

0

Установите HTTP-заголовок обновления как раз после окончания сеанса. Это приведет к перезагрузке страницы сразу после истечения срока действия сеанса, в результате чего вы выведете журнал.

0

Я нашел решение в документации: В конфигурации системы безопасности пружинного вы должны добавить следующую строку:

<session-management invalid-session-url="/login" /> 

Пример:

<form-login 
    login-page="/login" 
    default-target-url="/" 
    authentication-failure-url="/login?error" 
    username-parameter="username" 
    password-parameter="password" /> 

<session-management invalid-session-url="/login" /> 

<form-login login-processing-url="/login" login-page="/login"/> 
<logout logout-success-url="/" logout-url="/logout"/> 

Я надеюсь, что это поможет.

Смежные вопросы