문제

스프링 보안을 제한된 URL에 사용하고 있습니다. 같은 페이지에 가입 및 로그인 페이지를 제공하려고합니다.

로그인시 스프링 보안이 제한된 페이지로 전송됩니다. 그러나 대상 URL을 가입 프로세스로 전달하려고 시도하여 가입 후 제한된 페이지로 리디렉션 할 수 있습니다.

사용자가 리디렉션 한 실제 URL을 얻는 방법.

어떤 아이디어?

도움이 되었습니까?

해결책

이것이 스프링 보안에서 URL을 얻은 방법입니다.

SavedRequest savedRequest = (SavedRequest)session.getAttribute(
    AbstractProcessingFilter.SPRING_SECURITY_SAVED_REQUEST_KEY);
String requestUrl = savedRequest.getFullRequestUrl();

다른 팁

그들은 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() + "/";
}

스프링 보안 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");
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top