Play framework: Wie erfordern einen login für einige Aktionen, aber nicht alle
Hinzufügen @With(Secure.class)
einem controller blockiert alle nicht autorisierten Zugriff. Gibt es eine Möglichkeit, aktiviert es nur für bestimmte Aktionen oder außer bestimmte Aktionen, nachdem es aktiviert auf einem controller?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie nicht mit der secure-Modul. Wie Niels schon sagte das secure-Modul ist mehr ein Beispiel als eine Lösung. Sie können bauen Sie Ihre eigenen Sicherheits-system mit der @Before-annotation. Hier ist ein Beispiel:
Empfehle ich Ihnen, Lesen Sie den source-code der secure-Modul.
Hab ich da gefunden, meine frühere
@Public
Lösung etwas einschränken, da es sich nicht um vererbte Aktionen. Ich habe stattdessen gegangen, um ein class-level annotation:Hinzugefügt und diesen code an den Anfang der
Secure.checkAccess()
Methode:kann z.B. so verwendet werden:
@AllowGuest({"list","view"})
Dies macht es einfach, um Zugriff auf lokale und vererbte Aktionen, und zu sehen, welche Aktionen in einem controller sind ungesichert.
Entfernen
@With(Secure.class)
Anmerkung zum controller, und fügen Sie dieses Stück code im controller.wo
show
ist die Aktion, die Sie benötigen, um öffentlich zur Verfügung stellen.Um zu bekommen, was ich gesucht hatte, kopierte ich die
Check
annotation und erstellt einePublic
annotation.dann habe ich diese beiden Zeilen an den Anfang der
Secure.checkAccess
:Nun Aktionen im Controller mit Hilfe
With(Secure.class)
zugänglich gemacht werden können, ohne sich anzumelden, indem ein@Public
Anmerkung zu Ihnen.Können Sie einstellen, an dem @Vor-Tag von der Sicheren Steuerung der Wert, es sei denn, oder nur. Das Secure-Modul ist mehr ein Beispiel als eine Lösung.