Node.js   发布时间:2022-04-24  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了node.js – 在PassportJS中使用多个本地策略大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图用PassportJS使用多个LOCAL策略。我不想使用本地,Facebook和Gmail等。
我有两组用户存储在单独的对象中,我想使用本地策略来进行身份验证。就这样,我不能使用相同的本地策略,因为它们具有不同的对象属性,可以让我查询不同的对象。有没有办法做到这一点?或者对此的任何建议将不胜感激。

解决方法

我不认为这是可能的,因为据我看到,当第一个失败时,我需要一些“递交”请求到第二个策略的方法,我不相信这是可能的。

但您可能可以使用一个本地策略,并尝试使用两种方法来验证传入的数据。

作为一个简单的例子(使用Mongoose作为示例数据库):

passport.use(new LocalStrategy(function(username,password,donE) {
  Model1.findOne({ username : username },function(err,user) {
    // first method succeeded?
    if (!err && user && passwordMatches(...)) {
      return done(null,user);
    }
    // no,try second method:
    Model2.findOne({ name : username },user) {
      // second method succeeded?
      if (! err && user && passwordMatches(...)) {
        return done(null,user);
      }
      // fail! 
      done(new Error('invalid user or password'));
    });
  }); 
}));@H_403_21@ 
 

对于序列化/反序列化,您可能需要在传递给完成的用户对象中存储一些属性,以表示反序列化用户所需的模型。

大佬总结

以上是大佬教程为你收集整理的node.js – 在PassportJS中使用多个本地策略全部内容,希望文章能够帮你解决node.js – 在PassportJS中使用多个本地策略所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。