Zunächst Zulassungsentscheidungen muss auf der Serverseite durchgeführt werden. Es ist auch eine gute Idee, dies auf der Client-Seite in Angular.js zu tun, wie Sie es vorgeschlagen haben, aber dies dient nur dazu, die Benutzererfahrung zu verbessern, zum Beispiel den Benutzer nicht auf etwas zu verweisen, auf das er keinen Zugriff hat.
Mit JWTs können Sie Ansprüche über den Benutzer innerhalb des Token einbetten, wie folgt aus:
var jwt = require('jsonwebtoken');
var token = jwt.sign({ role: 'admin' }, 'your_secret');
Um Karte Berechtigungen Routen zum Ausdruck bringen, Sie connect-roles verwenden können saubere und gut lesbare Berechtigungsmiddleware-Funktionen zu bauen. Nehmen wir zum Beispiel Ihre JWT wird im HTTP-Header gesendet und Sie haben die folgende (naive) Genehmigung Middleware:
// Naive authentication middleware, just for demonstration
// Assumes you're issuing JWTs somehow and the client is including them in headers
// Like this: Authorization: JWT {token}
app.use(function(req, res, next) {
var token = req.headers.authorization.replace(/^JWT /, '');
jwt.verify(token, 'your_secret', function(err, decoded) {
if(err) {
next(err);
} else {
req.user = decoded;
next();
}
});
})
Damit können Sie Ihre Autorisierungsrichtlinien auf Strecken durchzusetzen, wie folgt aus:
var ConnectRoles = require('connect-roles');
var user = new ConnectRoles();
user.use('admin', function(req) {
return req.user && req.user.role === 'admin';
})
app.get('/admin', user.is('admin'), function(req, res, next) {
res.end();
})
Beachten Sie, dass es viel bessere Möglichkeiten gibt, & zur Validierung von JWTs wie express-jwt oder passport in Verbindung mit passort-jwt
auszugeben