【发布时间】:2020-04-20 22:50:43
【问题描述】:
我不知道怎么问这个问题,所以看起来有点荒谬!
我正在使用 Node 和 Express(中间件)开发应用程序。我还使用 Passport (Local) 进行身份验证。 关于我的应用程序的业务,我需要管理两种用户。
定义
应用用户:使用应用的人。
管理员:管理应用程序内容的人。
现在,我使用护照(本地)来验证应用程序用户。因此,我在“app”中调用了我的护照设置。当前设置知道应用程序用户的表并且工作正常。但是,对于管理员来说,还有另一个需要查询的集合。 问题:如何使用护照设置两个不同的集合?让我给你看一些代码来说明这种情况。
app.js
const port = process.env.PORT || 5000;
var passport = require('passport');
var setupPassport = require('./setup-passport');
//Some code here and then
setupPassport();
设置护照
module.exports = function () {
passport.serializeUser(function (user, done) {
done(null, user._id);
});
passport.deserializeUser(function(id,done){
User.findById(id,function(err,user){
done(err,user);
});
});
};
//And
passport.use('login',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:'The username has not been found!'});
}
user.checkPassword(password,function(err,isMatch){
//...
如您所见,已为应用程序用户设置了配置。如果我想为管理员设置另一个集合怎么办?有没有针对不同收藏设置护照的解决方案?两个用户将同时使用同一个应用程序,因此都可以登录和注销。
一个可能但丑陋的解决方案
我一直在考虑将所有用户信息放在一个集合中,但我确信这不太好!
【问题讨论】:
标签: node.js express passport.js