passport.jsを使用して、特定のエンドポイントに正しいパスワードを持つだけでなく、特定のグループのメンバーであるか特定のアクセス権を持っていることを確認します。Passport.jsでのアクセス/グループの確認
私はUSERとADMINのアクセスレベルがあれば簡単にできます。
私は、パスワードの認証にパスポートを使用することができます。私は、ユーザーが認証をパスことを確認することができますルートに続いて
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);
});
}
));
を:
app.get('/api/users',
passport.authenticate('local'),
function(req, res) {
res.json({ ... });
});
しかし、あなたがADMINのアセスを持っている必要があります言うことができますhit/api/users 'と入力します。自分の戦略を書く必要がありますか?私はローカルユーザーとローカル管理者の戦略を持っている必要があり、それぞれ適切なアクセスレベルを確認しますか?
私はこれをかなり簡単に行うことができると思いますが、私のサイトに異なる認証方法(oauthを使用することがあります)が必要なときに問題が発生し、カスタム* -user、* -adminの戦略を書く必要があります。過度の殺人のようだ。
その他のオプションは、ユーザーが認証された後で各ルートのアクセス/グループを確認することです。しかし、私は可能ならミドルウェアでこれを行うことを好むでしょう。
おかげ
ああ、私は参照してください。エクスプレスで順番に呼び出される一連の「ミドルウェア」機能を使うことができるようです。気づいていない、それを逃している必要があります。マニュアルをもう一度読む時間;)ありがとう、これは完璧です! – lostintranslation
うん、そこには: 'app.VERB(パス、[コールバック...]、コールバック)'です。申し訳ありませんが、私はそれを逃して、あなたの答えで非常に親切でありがとう! – lostintranslation
これは便利な「トリック」です。私は自分自身を忘れています:) – robertklep