Gibt es eine Möglichkeit, Anmerkungen bedingungsabhängig anzuwenden?

8

In meiner Java-Play-Anwendung habe ich die Annotation @RequiresAuthentication(clientName = "CasClient") in meinem Controller.

Ich möchte nur Benutzer in meiner Produktionsumgebung authentifizieren.

Wie kann ich Anmerkungen bedingt anwenden?

Wenn die Art und Weise, wie ich mich der Authentifizierung annähere, falsch ist, was ist die herkömmliche Art, die CAS-Authentifizierung nur bei der Produktion in einer Java-Play-Anwendung durchzuführen?

    
Blinky 29.04.2016, 22:14
quelle

1 Antwort

3

Sie können authenticators implementieren, um Benutzer zu authentifizieren. Sie könnten Ihre Authentifizierungslogik in Ihre Authenticator-Implementierung schreiben.

Play kommt bereits mit einer eingebauten authenticator Aktion, die wir erweitern werden, um unsere Logik hinzuzufügen. Wir werden diesen Authentifikator Gesichert nennen.

%Vor%

Wir haben hier zwei Methoden implementiert. getUsername wird verwendet, um den Nutzernamen des aktuell angemeldeten Benutzers abzurufen. In unserem Fall ist dies die E-Mail -Adresse, die wir beim Anmelden des Benutzers im E-Mail-Attribut in der Sitzung festgelegt haben. Wenn diese Methode einen Wert zurückgibt, betrachtet der Authenticator den Benutzer als angemeldet. und lässt die Anfrage weitergehen. Wenn die Methode jedoch null zurückgibt, blockiert der Authentifikator die Anfrage und ruft stattdessen onUnathorized auf, was wir implementiert haben, um zu unserem Anmeldebildschirm umzuleiten. Sie können Ihre eigene Geschäftslogik für Benutzer zur Benutzerüberprüfung implementieren.

Verwenden wir nun diesen Authentifikator. Fügen Sie in Application.java die @ Security.Authenticated Annotation mit unserem Authenticator zur Methode index hinzu:

%Vor%

Refs: Play Implementing Authenticator Beispiel

    
CrawlingKid 02.05.2016 18:32
quelle