Wie sollte ACL in einer REST-API funktionieren?

8

Eine REST-API ist in ExpressJs 4.x.x / NodeJS geschrieben.

Nehmen wir eine Schnittstelle an:

%Vor%

Also mit dieser Schnittstelle können Benutzer gelöscht werden.

Nehmen wir an, es gibt 2 Kunden im System und jeder Kunde hat Benutzer. Ein Benutzer kann das Privileg haben, andere Benutzer mit einer Rolle namens CustomersAdmin zu löschen. Dieser Benutzer sollte jedoch nur Benutzer löschen können, die Benutzer von seinem Unternehmen (Kunden) sind.

Also, lasst uns ACL in die Szene bringen. In unserer ACL können wir Rollen, Ressourcen und Berechtigungen definieren. (Der Code wurde von Ссылка übernommen.)

%Vor%

Es gibt zwei Dinge zu beachten. Einer schützt die Route von Personen ohne Erlaubnis zu HTTP / DELETE auf dieser Route (/ api / v1 / users /: uid) und der andere ist, dass eine Person mit der Rolle CustomersAdmin Benutzer von einem anderen Kunden nicht löschen darf. p>

Soll ACL beides tun? Oder soll es die route / api / v1 / users schützen?

Also, würde ich es wie

verwenden %Vor%

Dies würde es jedem Benutzer mit der Rolle CustomersAdmin erlauben, jeden gewünschten Benutzer zu löschen. Oder ist es vorzuziehen, jede mögliche Benutzerroute als Ressource zu definieren und mehrere Rollen zu definieren, die mit ihnen interagieren können?

%Vor%     
Schemiii 23.06.2015, 09:30
quelle

1 Antwort

2

Wie ich das gelöst habe, war das Erstellen einer Rolle pro Benutzer. Ich benutze einen Mungo-Post-Speichern-Haken:

%Vor%

Dann in einem Post-Speichern-Hook für eine Ressource mache ich das:

%Vor%

Sie können dann die Methode isAllowed verwenden, um zu überprüfen, ob req.user die richtigen Berechtigungen hat.

    
jameslouiz 15.01.2016 18:13
quelle

Tags und Links