【发布时间】:2020-10-03 02:21:22
【问题描述】:
我已使用本地护照进行身份验证,但无法正常工作。它只能从这两个(用户和管理员)中工作一个。我不知道为什么它会这样工作。如果有人知道,请帮助找到解决方案。
passportconfig.js:
const passportuser = require('passport');
const localStrategyuser = require('passport-local').Strategy;
const mongooseuser = require('mongoose');
const passportAdmin = require('passport');
const localStrategyAdmin = require('passport-local').Strategy;
const mongooseadmin = require('mongoose');
var User = mongooseuser.model('User');
var Admin = mongooseadmin .model('Admin');
passportuser.use(
new localStrategyuser({ usernameField: 'email' },
(username, password, done) => {
User.findOne({ email: username },
(err, user) => {
if (err) { return done(err); } else if (!user) {
return done(null, false, { message: 'Email is not registered for User' });
} else if (!user.verifyPassword(password)) {
return done(null, false, { message: 'Wrong password.' });
} else {
return done(null, user);
}
});
})
);
passportAdmin.use(
new localStrategyAdmin({ usernameField: 'email' },
(username, password, done) => {
Admin.findOne({ email: username },
(err, admin) => {
if (err)
return done(err);
// unknown user
else if (!admin)
return done(null, false, { message: 'Email is not registered for Admin' });
// wrong password
else if (!admin.verifyPassword(password))
return done(null, false, { message: 'Wrong password.' });
// authentication succeeded
else
return done(null, admin);
});
})
);
【问题讨论】:
-
您的代码显示它只会对来自两个表
user和admin的用户进行身份验证,所以你试图解释的内容不清楚.. -
另外,
passportuser和passportadmin仅在您需要相同的passport时相同。所以一个基本上你有一本护照和同一个护照的两个本地策略。所以结合这些逻辑会很好。Requiring将护照或芒果分成两个差异变量不会使它们不同。它们是存储在差异变量中的相同实例。 -
我从这里得到了这个代码:github.com/CodAffection/…
-
我将这个用于用户和管理部分..所以我不知道如何使用它/
-
我不知道如何将它用于用户部分和管理部分
标签: node.js mongoose passport.js passport-local passport-jwt