如何处理护照js中的多个会话

Sau*_*iya 5 node.js passport.js

我使用护照js来验证请求,但是在我的应用程序中,我需要维护两种不同类型的会话,一个用于管理员用户,一个用于普通用户,因此如果管理员登录,则应维护会话,如果用户登录然后会话应该单独维护,现在我使用两个护照策略,一个用于用户,另一个用于admin_user但是我从req.session.passport.user获取的会话是最后登录的人,有没有办法让它分离像req.session.passport.admin和req.session.passport.user这样的东西?现在我的策略如下所示.

     passport.use('admin', new LocalStrategy({
        usernameField: 'email',
        passwordField: 'password'
      },
      function(email, password, done) {
        var adminflag = 'admin';
        db.adminUser.find({ where: { email: email }}).success(function(user) {
          if (!user) {
            done(null, false, { message: 'Unknown user' });
          } else if (!user.authenticate(password)) {
            done(null, false, { message: 'Invalid password'});
          } else {
            console.log('Login (local) : { id: ' + user.id + ', username: ' + user.username + ' }');
            done(null, user);
          }
        }).error(function(err){

          done(err);
        });
      }
    ));

passport.use('user', new LocalStrategy({
    usernameField: 'email',
    passwordField: 'password'
  },
  function(email, password, done) {
    var userflag = 'user';
    db.User.find({ where: { email: email }}).success(function(user) {
      if (!user) {
        done(null, false, { message: 'Unknown user' });
      } else if (!user.authenticate(password)) {
        done(null, false, { message: 'Invalid password'});
      } else {
        console.log('Login (local) : { id: ' + user.id + ', username: ' + user.username + ' }');
        done(null, user);
      }
    }).error(function(err){
      done(err);
    });
  }
));
Run Code Online (Sandbox Code Playgroud)