0

Ich versuche, einige REST-API mit Benutzerrollen wie Admin, Superadmin usw. Ich habe versucht, dies zu erreichen, indem Sie feathers-permissions Modul verwenden, aber es gibt keine Arbeitsbeispiele und das Internet. Haben Sie sich jemals mit einer solchen Aufgabe beschäftigt? Was ich jetzt mache ist: feathers generate app und dann feathers generate authentication. Was soll ich als nächstes tun?Benutzerberechtigungen in feathers.js API

Antwort

1

Das Geheimnis zum Implementieren von Berechtigungen und Rollen in Feathers ist, dass Hooks wirklich alles, was Sie brauchen, mit der Flexibilität, die Sie möchten, bieten. Es ist nicht wirklich notwendig, Zeit für ein separates Modul zu suchen und seine API zu lernen.

Speichern Sie die Berechtigungen (die normalerweise nur Zeichenfolgen sind) in einem Array auf dem Benutzer (oder einem separaten permissions Dienst basierend auf der Benutzer-ID) und dann in einem before Haken überprüfen, ob der Benutzer die Operation den Haken ausführen darf wird registriert (hier wird die Erlaubnis messages::create genannt), und wenn kein Feathers error werfen:

const { Forbidden } = require('feathers-errors'); 

app.service('messages').hooks({ 
    before: { 
    create: [ context => { 
     // `params.provider` is set for any external access 
     // usually we don't need to check permissions for internal calls 
     const isExternal = !!context.params.provider; 

     if(isExternal && !context.params.user.permissions.includes('messages::create')) { 
     throw new Forbidden('You are not allowed to access this'); 
     } 
    }] 
    } 
}); 

Dieses Muster auch für Knoten mit jeder vorhandenen Berechtigungen Modul implementiert werden kann. Weitere Informationen finden Sie in den Blogposts über Access Control Strategies in FeathersJS und Easy API Authorization with CASL and Feathers.

Verwandte Themen