Frage

Ich brauche einen Benutzer in einer Seite zur Authentifizierung auf der Basis des erinnere mich Cookie, von dieser Seite inspiriert: Tutorial zur Überprüfung Feder Authentifizierung , Ich kam zur Überprüfung der Authentifizierung mit einer Lösung auf.

Änderungen gemacht in meiner Anwendung

application-security.xml:

<intercept-url pattern='/**AuthenticationChecker.html' access="ROLE_ADMIN"/>
...
<form-login login-page="/Login.html" authentication-failure-url="/Login.html" always-use-default-target="true" default-target-url="/Main.html"/>

GWT-Code:

try
{
    RequestBuilder rb = new RequestBuilder(
    RequestBuilder.POST, "AuthenticationChecker.html");
            rb.sendRequest(null, new RequestCallback() 
            {
                public void onError(Request request, Throwable exception)
                {
                    RootPanel.get().add(new HTML("[error]" + exception.getMessage()));
                }
                public void onResponseReceived(Request request, Response response)
                {
                    RootPanel.get()
                   .add(new HTML("[success (" + response.getStatusCode() + "," + response.getStatusText() + ")]"));
                }
            }
    );
}
catch (Exception e)
{
    RootPanel.get().add(new HTML("Error sending request " + e.getMessage()));
}

AuthenticationChecker.html ist eine einfache leere HTML-Seite, von dem, was ich verstehe, wie AuthenticationChecker.html Rolle als Administrator erfordert, habe ich ein 401 bekam Unerlaubte wenn wir erinnern Cookie war nicht vorhanden und ein 200 OK, wenn der Benutzer authentifiziert und seine Cookie war anwesend war.

Allerdings ist der Ausgang immer zeigt: [Erfolg (200, OK)]

Um cross check, ich einfach authenticaionChecker.html getippt (ohne Anmeldung) und kehrte zurück zu login.html, dass der Frühling anzeigt, in der Tat der den Benutzer authentifiziert.

Bin ich etwas falsch hier?

War es hilfreich?

Lösung

Wenn Sie sich das Tutorial schauen, sehen Sie, dass ein 401 nur zurückgegeben, wenn Sie Standardauthentifizierung verwenden. Mit formularbasierte Authentifizierung, müssen Sie den Antworttext für eine Fehlermeldung überprüfen. Zum Beispiel:

public void onResponseReceived(Request request, Response response) {
    if (response.getStatusCode() != Response.SC_OK) {
        onError(request, new RequestException(response.getStatusText() + ":\n" + response.getText()));
        return;
    }

    if (response.getText().contains("Access Denied")) {
        Window.alert("You have entered an incorrect username or password. Please try again.");
    } else {
        // authentication worked, show a fancy dashboard screen
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top