18

制限付き URL に春のセキュリティを使用しています。同じページで、サインアップとログインのページを提供しようとしています。

ログイン時の春のセキュリティは、制限されたページに移動します。ただし、サインアップ後に制限されたページにリダイレクトできるように、ターゲットURLをサインアッププロセスに渡そうとしています。

ユーザーがリダイレクトされた実際の URL を取得する方法。

何か案は?

4

4 に答える 4

16

これは、Spring Security から URL を取得した方法です。

SavedRequest savedRequest = (SavedRequest)session.getAttribute(
    AbstractProcessingFilter.SPRING_SECURITY_SAVED_REQUEST_KEY);
String requestUrl = savedRequest.getFullRequestUrl();
于 2009-03-10T17:21:17.203 に答える
15

彼らは春のセキュリティ 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() + "/";
}
于 2010-11-29T20:31:31.447 に答える
5

春のセキュリティ 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");
    }
}
于 2017-05-24T23:48:47.783 に答える