Spring Security: как получить начальный целевой URL - PullRequest
14 голосов
/ 10 марта 2009

Я использую пружинную защиту для ограниченных URL. Я пытаюсь предоставить страницу регистрации и входа на одной странице.

При входе в систему Spring пружины безопасности переходят на страницу с ограниченным доступом. Однако я пытаюсь передать целевой URL процессу регистрации, чтобы после регистрации мы могли перенаправить на страницу с ограниченным доступом.

Как получить фактический URL, с которого был перенаправлен пользователь.

Есть идеи?

Ответы [ 3 ]

14 голосов
/ 10 марта 2009

Вот так я получил URL-адрес от Spring Security.

SavedRequest savedRequest = (SavedRequest)session.getAttribute(
    AbstractProcessingFilter.SPRING_SECURITY_SAVED_REQUEST_KEY);
String requestUrl = savedRequest.getFullRequestUrl();
13 голосов
/ 29 ноября 2010

Они немного изменили положение в Spring Security 3.0, поэтому приведенный выше фрагмент кода больше не работает. Это делает трюк, хотя:

protected String getRedirectUrl(HttpServletRequest request) {
    HttpSession session = request.getSession(false);
    if(session != null) {
        SavedRequest savedRequest = (SavedRequest) session.getAttribute(WebAttributes.SAVED_REQUEST);
        if(savedRequest != null) {
            return savedRequest.getRedirectUrl();
        }
    }

    /* return a sane default in case data isn't there */
    return request.getContextPath() + "/";
}
3 голосов
/ 25 мая 2017

с пружинной защитой 4.1.4:

@Override
public void onAuthenticationSuccess(HttpServletRequest request,
        HttpServletResponse response, Authentication authentication)
        throws IOException, ServletException {

    SavedRequest savedRequest = new HttpSessionRequestCache().getRequest(request, response);
    if (savedRequest != null) {
        response.sendRedirect(savedRequest.getRedirectUrl());
    }
    else{
        response.sendRedirect("some/path");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...