Ответ 1
Вот как я получил URL-адрес из Spring Безопасность.
SavedRequest savedRequest = (SavedRequest)session.getAttribute( AbstractProcessingFilter.SPRING_SECURITY_SAVED_REQUEST_KEY); String requestUrl = savedRequest.getFullRequestUrl();
Я использую защиту spring для ограниченных URL-адресов. Я пытаюсь предоставить страницу регистрации и регистрации на той же странице.
При входе spring защита переходит на страницу с ограничениями. Однако я пытаюсь передать целевой URL-адрес процессу регистрации, так что после регистрации мы можем перенаправить на ограниченную страницу.
Как получить фактический URL, с которого был перенаправлен пользователь.
Любые идеи?
Вот как я получил URL-адрес из Spring Безопасность.
SavedRequest savedRequest = (SavedRequest)session.getAttribute( AbstractProcessingFilter.SPRING_SECURITY_SAVED_REQUEST_KEY); String requestUrl = savedRequest.getFullRequestUrl();
Они немного переместились в spring безопасности 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 безопасностью 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");
}
}