【问题标题】:Can I deserialize the different users like student and admin in passport.js?我可以在passport.js中反序列化不同的用户,比如学生和管理员吗?
【发布时间】:2020-04-05 01:34:12
【问题描述】:

在passport js认证时反序列化用户我有以下疑问?

我可以使用不同的登录表来获取用户吗?(取决于他们是管理员还是学生) 但是我试图通过使用不起作用的 if 语句来实现它,这意味着无法从数据库中获取。我在做什么任何帮助!

【问题讨论】:

  • 使用权限而不是表。你可以使用。只需拨打 2 个电话

标签: node.js express authentication passport.js


【解决方案1】:

使用 LocalStrategy 你可以使用它。在这里,您必须进行两次不同的调用才能进行检查。

示例:

passport.use(new LocalStrategy(
  function(username, password, done) {
    async.parallel([
      function(cb){
        User.findOne({ username: username }, function (err, user) {
          if (err) { return done(err); }
          if (!user) { return done(null, false); }
          if (!user.verifyPassword(password)) { return done(null, false); }
          return cb(null, user);
        });
      },
      function(cb){
        Admin.findOne({ username: username }, function (err, user) {
          if (err) { return done(err); }
          if (!user) { return done(null, false); }
          if (!user.verifyPassword(password)) { return done(null, false); }
          return cb(null, user);
        });
      }
    ], ([res1, res2]) => {
      // on result 
      done(null, res1)
      // OR
      done(null, res1)
    })

  }
));

【讨论】:

    猜你喜欢
    • 2015-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    相关资源
    最近更新 更多