Spring Security: Como obter o URL de destino inicial
-
08-07-2019 - |
Pergunta
Eu estou usando a segurança Primavera para urls restritos. Eu estou tentando fornecer inscrição e página de login, na mesma página.
Em transferências de segurança Primavera de login para a página restrito. No entanto eu estou tentando passar o URL de destino para o processo de inscrição, de modo que após a inscrição podemos redirecionar para a página restrito.
Como obter o URL real que usuário foi redirecionado.
Alguma idéia?
Solução
Isto é como eu tenho o URL do Spring Security.
SavedRequest savedRequest = (SavedRequest)session.getAttribute( AbstractProcessingFilter.SPRING_SECURITY_SAVED_REQUEST_KEY); String requestUrl = savedRequest.getFullRequestUrl();
Outras dicas
Eles se mudaram as coisas um pouco em Spring Security 3.0, de modo que o trecho de código acima não funciona mais. Isso faz o truque, no entanto:
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() + "/";
}
com segurança 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow