2017-11-30 10 views
0

私のプロジェクトでは、2つのログインシステムを使用しています。 1つは管理者、もう1つはユーザー用、その他はユーザー用です。 既にPassportの助けを借りてAdminのログインシステムが実装されています。 今私は同じコンセプトを使用していますその時のユーザーログインシステムでは動作しません。私はそれが私の管理者ログインに影響することを意味します。 私のコードは、私が作品を、私はbasicStrategy使用asloが、その後私の管理者ログインが以前のように完璧に動作しますが、私のユーザーのログインではないので、LocalStrategyがエラーを発生させることを考えPassport LocalStrategy 2台のログインシステムで動作しません

passport.use(new LocalStrategy(
    function(username, password, done) { 
    User.getUserByUsername(username, function(err, user){ 
     if(err) throw err; 
     if(!user){ 
      return done(null, false, {message: 'Unknown User'}); 
     } 
     User.comparePassword(password, user.password, function(err, isMatch){ 
      if(err) throw err; 
      if(isMatch){ 
       return done(null, user); 
      }else{ 
       return done(null, false, {message: 'Invalid Credential, please check carefully...!'}) 
      } 
     }); 
    }); 
    } 
)); 

passport.serializeUser(function(user, done) { 
    done(null, user.id); 
}); 

passport.deserializeUser(function(id, done) { 
    User.getUserById(id, function(err, user) { 
     done(err, user); 
    }); 
}); 

router.post('/login', 
    passport.authenticate('local', { 
    failureRedirect: '/user/login', 
    badRequestMessage: 'Field cannot be blank.!!', //missing credentials 
    failureFlash: true 
    }), 
    function(req, res) { 
    req.flash('success_msg', 'Welcome ' + req.user.name); 
    res.redirect('/user/dashboard'); 
    }); 

です。毎回Basic Realm = "Users"と言います。 任意のヘルプは、ローカルまたは基本戦略に実際

答えて

0

に感謝そのことになります。これは、passport.serializeUserとdeserializeUserに完全に依存します。 我々はserializeUser上のユーザID、ユーザ・データを送信する必要がありません。また、deserializeUserでは、いくつかの一意性を選択してから、条件に従ってクエリを実行する必要があります。実際には、deserializeUser関数はクエリの時点で1つのDBのみを処理できます。

関連する問題