Ich verwende Express-JWT, um meinen API-Endpunkt zu schützen, sodass nur authentifizierte Benutzer auf meine APIs zugreifen können. Jetzt möchte ich auch meine APIs basierend auf der Rolle des Benutzers schützen. Zum Beispiel kann der Benutzer nur auf einige APIs zugreifen, wenn sie Admin sind, einige andere, wenn sie Super Admin sind, usw. Wie kann ich das erreichen? Ich fand in Express-jwt Github doc diesen Code-Schnipsel:Rollenbasierte Autorisierung mit exress-jwt?
app.get('/protected',
jwt({secret: 'shhhhhhared-secret'}),
function(req, res) {
if (!req.user.admin) return res.sendStatus(401);
res.sendStatus(200);
});
Es sieht aus wie dieser Code Berechtigung in API-Controller-Funktion zu tun ist. Ist es der einzige und empfohlene Weg? Gibt es bessere Möglichkeiten, dies zu tun? Irgendwelche Tipps zu Best Practices dafür?
Können Sie mir bitte weitere Details darüber geben, wie Sie die Autorisierung oft durchführen? Insbesondere, zum Beispiel, ich habe 3 Benutzerrollen, Super Admin, Admin und Benutzer und 10 API-Endpunkte, können wir sie zur Vereinfachung Zweck API 1, API 2, ... API 10. Was, wenn ich nur super Admin zu lassen und Admin haben Zugriff auf API 1 -> API 3, nur Super Admin und Benutzer haben Zugriff auf API 4 -> API 6, und die anderen sind für alle authentifizierten Benutzer verfügbar? Die Lösung, die ich denken kann, ist, zwei Middleware-Handler zu schreiben, den für API 1 -> API 3 und den anderen für API 4 -> API 6. Was ist deins? – congtrungvnit
Bedeutet dies, dass Rolleninformationen im Token gespeichert sind? – Learner