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?

Foi útil?

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
scroll top