Spring Security: как получить начальный целевой URL
-
08-07-2019 - |
Вопрос
Я использую пружинную защиту для ограниченных URL. Я пытаюсь предоставить страницу регистрации и входа на одной странице.
При входе в систему Spring безопасность переходит на страницу с ограниченным доступом. Однако я пытаюсь передать целевой URL в процесс регистрации, чтобы после регистрации мы могли перенаправить на страницу с ограниченным доступом.
Как получить фактический URL, с которого был перенаправлен пользователь. Р>
Есть идеи?
Решение
Вот как я получил URL от Spring Security.
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