Spring Security: cómo obtener la URL de destino inicial
-
08-07-2019 - |
Pregunta
Estoy usando la seguridad de primavera para restringir las URL. Estoy tratando de proporcionar una página de registro e inicio de sesión, en la misma página.
Al iniciar sesión, Spring Security se transfiere a la página restringida. Sin embargo, estoy tratando de pasar la URL de destino al proceso de registro, para que después del registro podamos redirigir a la página restringida.
Cómo obtener la URL real desde la que se redirigió al usuario.
¿Alguna idea?
Solución
Así es como obtuve la URL de Spring Security.
SavedRequest savedRequest = (SavedRequest)session.getAttribute( AbstractProcessingFilter.SPRING_SECURITY_SAVED_REQUEST_KEY); String requestUrl = savedRequest.getFullRequestUrl();
Otros consejos
Se movieron un poco en Spring Security 3.0, por lo que el fragmento de código anterior ya no funciona. Sin embargo, esto hace el truco:
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() + "/";
}
con seguridad de primavera 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");
}
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow