で認証します。過去1時間はpassport.jsのログインで複数のモデルを認証する方法を探しています。 私のアプリには2つのモデル、先生と学生があり、先生や生徒であることを確認するログインページを作ってからログインし、app.jsの2つのモデルをシリアライズしてデシリアライズしようとしましたが、どちらが認証するのかわからない、私はこれを行うことができる方法はありますか?複数のモデルをpassport.js
編集: 私は学生と教師の両方のコレクションに、学生用に1、教師用に2つのポジションフィールドを持っています。 2番目のpassport.use()呼び出しによってpassport.use()が上書きされたようです。その結果、私はStudent経由でログインすることしかできません。また、それらを反転するとTeacherにログインできます。
app.use(passport.initialize());
app.use(passport.session());
passport.use(new localStrategyTeacher (Teacher.authenticate()));
passport.use(new localStrategyStudent (Student.authenticate()));
passport.serializeUser((user, done) => {
let type;
if (user.position === 1) {
type = 'student';
} else {
type = 'teacher';
}
done(null, {id: user.id, type});
});
passport.deserializeUser((key, done) => {
if(key.type === 'student'){
Student.findById(key.id, function(err, user) {
done(err, user);
});
} else {
Teacher.findById(key.id, function(err, user) {
done(err, user);
});
}
});
回答ありがとうございますが、私の最後にはうまくいかず、私は質問を更新しました。 –
どのように動作しませんでしたか?あなたの更新を見て、私は検索エンジンでエラーを見ることができます。最後の行は 'done(null、{id:user.id、type:type});' –