Ich möchte mit pass.js überprüfen, ob Benutzer bestimmte Endpunkte erreichen, wenn sie nicht nur das richtige Kennwort haben, sondern Mitglied einer bestimmten Gruppe sind oder einen bestimmten Zugriff haben.Zugriff/Gruppe in Passport.js überprüfen
Der Einfachheit halber, wenn ich Zugriffsebenen von USER und ADMIN habe.
I Pass verwenden können ein Passwort zur Authentifizierung:
passport.use(new LocalStrategy(
function(username, password, done) {
User.findOne({ username: username }, function(err, user) {
if (err) { return done(err); }
if (!user) {
return done(null, false, { message: 'Incorrect username.' });
}
if (!user.validPassword(password)) {
return done(null, false, { message: 'Incorrect password.' });
}
return done(null, user);
});
}
));
Dann mit einer Route kann ich sicherstellen, dass der Benutzer übergibt Auth:
app.get('/api/users',
passport.authenticate('local'),
function(req, res) {
res.json({ ... });
});
Aber sagen lässt Sie ADMIN acess haben müssen Hit/API/Benutzer. Muss ich meine eigenen Strategien schreiben? IE muss ich eine lokale Benutzer- und lokale Admin-Strategie haben und in jedem die richtigen Zugriffsebenen überprüfen?
Ich denke, dass ich das ziemlich leicht tun kann, aber das Problem entsteht, wenn ich meine Website zu verschiedenen Auth-Methoden haben muss (vielleicht manchmal oauth verwenden), würde ich benutzerdefinierte * -user, * -admin Strategien für jeden schreiben müssen . Scheint wie Overkill.
Andere Option besteht darin, nur den Zugriff/die Gruppe in jeder Route zu überprüfen, nachdem der Benutzer authentifiziert wurde. Aber ich würde das lieber in der Middleware machen, wenn es geht.
Dank
Oh, wie ich sehe. Es sieht so aus, als könnten Sie eine Reihe von Middleware-Funktionen verwenden, die mit express aufgerufen werden. Habe das nicht mal gemerkt, muss es vermisst haben. Zeit das Handbuch nochmal zu lesen;) Danke, das ist perfekt! – lostintranslation
Ja, da ist es: 'app.VERB (Pfad, [Rückruf ...], Rückruf)'. Entschuldige, dass ich das verpasst habe und danke, dass du so freundlich mit deiner Antwort bist! – lostintranslation
Es ist ein nützlicher "Trick" Ich vergesse mich selbst :) – robertklep