Frage

Ich benutze Riegel zur Autorisierung.Ich muss einen Benutzer umleiten, wenn er anwesend ist (subjectPresent).Dieser Controller rendert beispielsweise die Anmeldeseite:

public static Result signup() {
     return ok(signup.render())
 }

Wenn ein Benutzer jedoch bereits vorhanden ist (also bereits registriert ist), muss ihn der oben genannte Verantwortliche auf seine Profilseite umleiten: return ok(profilePage.render())

Wie geht das mit Anmerkungen?

War es hilfreich?

Lösung

Deadbolt ist eigentlich nicht für diese Art der bedingten Umschaltung geeignet, aber Sie können es auf folgende Weise hacken:

  1. Erstellen Sie einen weiteren DeadboltHandler mit einem Namen wie SubjectPresentHandler
  2. Implementieren Sie die Methode SubjectPresentHandler#onAuthFailure, um zur Profilseite umzuleiten
  3. Kommentieren Sie Ihre Anmeldemethode mit

    @SubjectNotPresent(handler=SubjectPresentHandler.class)

Dies führt zu einem Autorisierungsfehler, wenn ein Benutzer vorhanden ist.Dadurch wird SubjectPresentHandler#onAuthFailure aufgerufen, um das Ergebnis zu erhalten.

Persönlich würde ich jedoch darüber nachdenken, innerhalb der Anmeldemethode einen einfachen Test hinzuzufügen, ähnlich wie

public static Result signup() {
    Result result;
    User user = // however you normally get your user
    if (user == null) {
        result = ok(signup.render())
    } else {
        result = redirect(routes.<your profile view method>);
    }
    return result;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top