Я не совсем уверен, как задать этот вопрос, поэтому он может показаться немного абсурдным!
Я занимаюсь разработкой приложения с использованием Node и Express (middleware). Я также использовал 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();
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){
//...
Как видите, конфигурация была установлена для пользователей приложения. Что если я хочу установить другую коллекцию для администраторов? Есть ли решение по настройке паспорта для разных коллекций? Оба пользователя будут использовать одно и то же приложение одновременно, поэтому оба могут войти и выйти из системы.
Вероятное, но уродливое решение
Я думал о том, чтобы поместить информацию о всех пользователях в одну коллекцию, хотя я уверен, что это нехорошо!