Frage

Ich bin mit der Feder Sicherheit beschränkt Urls. Ich versuche, die Registrierung und Login-Seite zur Verfügung zu stellen, auf der gleichen Seite.

Auf Login Federsicherheits Transfer zur abgesperrten Seite. Allerdings versuche ich die Ziel-URL an den Anmeldeprozess zu übergeben, so dass nach der Anmeldung wir zur abgesperrten Seite umleiten.

Wie die tatsächliche URL erhalten, die Benutzer aus wurden umgeleitet.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Dies ist, wie ich die URL aus der Spring Security bekam.

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

Andere Tipps

Sie bewegten sich die Dinge ein wenig herum im Frühjahr Sicherheit 3.0, so dass das obige Codefragment nicht mehr funktioniert. Dies funktioniert der Trick, aber:

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

mit Feder Sicherheit 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");
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top