Domanda

Sto usando la sicurezza di primavera per limitare gli URL. Sto cercando di fornire la pagina di registrazione e accesso, sulla stessa pagina.

All'accesso login, i trasferimenti di sicurezza alla pagina riservata. Tuttavia sto cercando di passare l'URL di destinazione al processo di registrazione, in modo che dopo l'iscrizione possiamo reindirizzare alla pagina riservata.

Come ottenere l'URL effettivo da cui l'utente è stato reindirizzato.

Qualche idea?

È stato utile?

Soluzione

Ecco come ho ottenuto l'URL da Spring Security.

SavedRequest savedRequest = (SavedRequest)session.getAttribute(
    AbstractProcessingFilter.SPRING_SECURITY_SAVED_REQUEST_KEY);
String requestUrl = savedRequest.getFullRequestUrl();

Altri suggerimenti

Hanno spostato le cose un po 'in Spring Security 3.0, quindi lo snippet di codice sopra non funziona più. Questo è il trucco, però:

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 sicurezza a molla 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");
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top