Spring Security:初期ターゲットURLを取得する方法
-
08-07-2019 - |
質問
Springセキュリティを使用して、制限付き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() + "/";
}
Spring Security 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");
}
}
所属していません StackOverflow