스프링 보안 : 초기 대상 URL을 얻는 방법
-
08-07-2019 - |
문제
스프링 보안을 제한된 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");
}
}
제휴하지 않습니다 StackOverflow