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

时间:2015-04-27 10:59:55

标签: 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);
    });
  }
));

0 个答案:

没有答案