passport.js를 사용하여 특정 끝점에 도달했을 때 올바른 암호 만 가질 수는 있지만 특정 그룹의 구성원이거나 특정 액세스 권한이 있는지 확인하고 싶습니다.Passport.js의 액세스/그룹 확인
간편하게하기 위해 USER 및 ADMIN 수준에 액세스 할 수 있습니다.
나는 암호 인증하기 위해 여권을 사용할 수 있습니다
app.get('/api/users',
passport.authenticate('local'),
function(req, res) {
res.json({ ... });
});
그러나 당신이 ADMIN의 ACESS이 필요 말할 수 : 내가 만들 수있는 경로로 그런
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);
});
}
));
있는지 사용자가 인증 통과 hit/api/users '를 누르십시오. 나 자신의 전략을 써야합니까? IE에는 로컬 사용자 및 로컬 관리자 전략이 있어야하며 각각 적절한 액세스 수준을 확인해야합니까?
나는 이것을 꽤 쉽게 할 수 있다고 생각하지만 다른 인증 방법 (어쩌면 가끔 oauth 사용)이 필요하면 문제가 발생합니다. 사용자마다 * -user, * -admin 전략을 작성해야합니다. . 과잉이라고 생각합니다.
다른 옵션은 사용자가 인증 된 후에 각 경로에서 액세스/그룹을 확인하는 것입니다. 그러나 가능한 경우 미들웨어에서이 작업을 수행하는 것이 좋습니다.
감사
아, 그렇군요. Express와 함께 순차적으로 호출되는 '미들웨어'배열을 사용할 수있는 것처럼 보입니다. 그것을 깨닫지도 못했을 것입니다. 매뉴얼을 다시 읽을 시간;) 감사합니다. 이것은 완벽합니다! – lostintranslation
네, 'app.VERB (경로, [콜백 ...], 콜백)'입니다. 죄송합니다. 답변을 놓치지 않고 친절하게 답변 해 주셔서 감사합니다. – lostintranslation
그것은 유용한 "트릭"나는 내 자신을 잊고 계속 : – robertklep