制限付き URL に春のセキュリティを使用しています。同じページで、サインアップとログインのページを提供しようとしています。
ログイン時の春のセキュリティは、制限されたページに移動します。ただし、サインアップ後に制限されたページにリダイレクトできるように、ターゲットURLをサインアッププロセスに渡そうとしています。
ユーザーがリダイレクトされた実際の URL を取得する方法。
何か案は?
制限付き URL に春のセキュリティを使用しています。同じページで、サインアップとログインのページを提供しようとしています。
ログイン時の春のセキュリティは、制限されたページに移動します。ただし、サインアップ後に制限されたページにリダイレクトできるように、ターゲットURLをサインアッププロセスに渡そうとしています。
ユーザーがリダイレクトされた実際の URL を取得する方法。
何か案は?
これは、Spring Security から URL を取得した方法です。
SavedRequest savedRequest = (SavedRequest)session.getAttribute( AbstractProcessingFilter.SPRING_SECURITY_SAVED_REQUEST_KEY); String requestUrl = savedRequest.getFullRequestUrl();
彼らは春のセキュリティ 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");
}
}