【发布时间】:2018-03-22 03:04:19
【问题描述】:
所以在过去的一个小时里,我一直在寻找在 passport.js 中登录时验证多个模型的方法,但无济于事。 我的应用程序有 2 个模型,教师和学生,我想创建一个登录页面来检查它是教师还是学生,然后登录,我尝试在 app.js 中序列化和反序列化这两个模型,但似乎没有'不知道要验证哪一个,有什么办法可以做到这一点?
编辑: 我的学生和老师的收藏中都有一个职位字段,1 个学生和 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);
});
}
});
【问题讨论】:
标签: javascript node.js passport.js