Spring security: перенаправить на предыдущий URL после выхода - PullRequest
5 голосов
/ 25 мая 2011

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

Есть ли простой способ сделать это?

Ответы [ 4 ]

7 голосов
/ 14 февраля 2012

Не уверен, на какую версию Spring ссылался этот вопрос - но в стандарте org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler начиная с Spring 3.0 имеется свойство useReferer.

Так что все, что вам нужно сделать, это настроить его следующим образом, и выход из системы будет перенаправлен туда, откуда пришел пользователь:

<bean id="logoutSuccessHandler" class="org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler">
    <property name="useReferer" value="true"/>
</bean>

<security:http>
    <security:logout logout-url="/logout" success-handler-ref="logoutSuccessHandler" />
</security:http>
2 голосов
/ 19 апреля 2017

Вам нужен простой LogoutSuccessHandler

@Component
  public class CustomLogoutSuccessHandler extends 
  SimpleUrlLogoutSuccessHandler implements LogoutSuccessHandler {

@Override
 public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse 
     response, Authentication authentication)
        throws IOException, ServletException {
    if (authentication != null) {
        System.out.println(authentication.getName());
    }
    response.setStatus(HttpStatus.OK.value());
    response.sendRedirect(request.getHeader("referer"));
}

и позже вызовите его в вашем методе настройки, например

.logout().logoutSuccessHandler(customLogoutSuccessHandler)

Это перенаправит вас на URL реферера.

1 голос
/ 25 мая 2011

Вы можете добавить новый фильтр в цепочку фильтров безопасности пружины.Этот новый файлер будет применен к URL-адресу /logout.При переходе через этот фильтр вы можете сохранить текущую страницу в переменной поля.И при возврате через фильтр.Вы можете перенаправить запрос на сохраненный URL.Я думаю, что это может помочь.Вы можете получить URL текущей страницы, используя.Заголовок Referer в объекте Request.

0 голосов
/ 25 мая 2011

Просто мысль:

Как насчет того, чтобы мы держали стопку посещенных страниц. может быть максимум 3 записи. и перенаправляет пользователя из выхода.

  • Настройка фильтра или расширение фильтра безопасности Spring для поддержания стека в сеансе о двух последних посещенных URL-адресах

  • При выходе настройте сервлет как logout-success-url.

  • Теперь получите URL из стека сессий и сейчас аннулируйте сеанс и перенаправьте пользователя на эту страницу

Также вы можете использовать заголовок реферера , как упоминал Виджай

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...