Question

J'utilise la sécurité printanière pour limiter les URL. J'essaie de fournir une page d'inscription et de connexion, sur la même page.

Lors de la connexion, la sécurité de printemps est transférée vers la page restreinte. Cependant, j'essaie de passer l'URL cible au processus d'inscription, afin qu'après la connexion, nous puissions rediriger vers la page restreinte.

Comment obtenir l'URL réelle à partir de laquelle l'utilisateur a été redirigé.

Des idées?

Était-ce utile?

La solution

Voici comment j'ai obtenu l'URL de la sécurité de printemps.

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

Autres conseils

Ils ont déplacé un peu les choses au printemps Security 3.0, donc l'extrait de code ci-dessus ne fonctionne plus. Cela fait l'affaire, cependant:

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() + "/";
}

avec sécurité au printemps 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");
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top