Wie schränkt man den Zugang zu bestimmten Routen in Phoenix ein?

8

Ich habe eine kleine Phoenix-Anwendung, mit der Benutzer sich anmelden und ihr Profil einsehen können. Ich habe die folgende einfache Route benutzt:

%Vor%

Aber das erlaubt jedem Benutzer, die Liste der Benutzer über die Aktion :index zu sehen, sowie jeden Benutzer zu löschen oder zu aktualisieren.

Was ist der einfachste Weg, um den Zugriff nur auf Administratoren zu beschränken? Sollte ich vor jeder Aktion einen Check hinzufügen? Oder sollte ich eine "/admin" Ressource erstellen, die diese Operationen behandelt? Was ist der empfohlene Weg?

    
adanselm 26.09.2014, 08:44
quelle

2 Antworten

11

Sie würden einen Stecker in UserController verwenden. 0.4.x hat keine Möglichkeit, s bedingt zu konditionieren, aber Sie könnten erreichen, was Sie wollen, etwa mit:

%Vor%

Die Änderungen, die in Kürze in 0.5 erfolgen, ermöglichen einfachere konditionelle Plugs, d. h.:

%Vor%

Es ist eine gute Idee, Ihre Controller für den öffentlichen / eingeschränkten Zugriff getrennt zu halten, also würde ich ein Admin.UserController hinzufügen, wie Sie es für die eingeschränkte Funktionalität angegeben haben.

    
Chris McCord 26.09.2014, 14:29
quelle
1

Sie könnten auch eine separate Pipeline für die authentifizierten Endpunkte definieren:

%Vor%

Der Admin-Bereich ist nur ein Beispiel, es kann alles sein, was Sie wollen, aber die Pipeline-Idee bleibt konsistent.

Diese Technik hält Ihre Controller sauberer, ist aber nicht immer möglich. Es hängt von Ihren genauen Anforderungen ab.

    
Jason Harrelson 16.03.2016 16:59
quelle

Tags und Links