Session 我正在尝试对多种类型的用户使用PassportJs(每种用户都有不同的模型)。我做错了什么?

Session 我正在尝试对多种类型的用户使用PassportJs(每种用户都有不同的模型)。我做错了什么?,session,express,configuration,passport.js,multiple-users,Session,Express,Configuration,Passport.js,Multiple Users,我正在尝试将PassportJs与express一起使用,使用多种类型的用户(每种用户都有不同的模型)。 当我只对一种类型的用户使用它时,它是正常的,但当我添加第二种类型时,它就不起作用了。有什么想法吗 // Configuring Passport var passport = require ('passport'); var LocalStrategyAdmin = require ('passport-local').Strategy; var LocalStrategyClient

我正在尝试将PassportJs与express一起使用,使用多种类型的用户(每种用户都有不同的模型)。 当我只对一种类型的用户使用它时,它是正常的,但当我添加第二种类型时,它就不起作用了。有什么想法吗

// Configuring Passport
var passport = require ('passport');

var LocalStrategyAdmin = require ('passport-local').Strategy;
var LocalStrategyClient = require ('passport-local').Strategy;

var adminModel = require ('./models/adminModel');
var clientModel = require ('./models/clientModel');

var session = require ('cookie-session');

app.use (session ({keys: [secretKey1, secretKey2]}));

app.use (passport.initialize ());
app.use (passport.session ());


passport.use (new LocalStrategyAdmin (adminModel.authenticate ()));
passport.use (new LocalStrategyClient (clientModel.authenticate ()));

passport.serializeUser (adminModel.serializeUser ());
passport.deserializeUser (adminModel.deserializeUser ());

passport.serializeUser (clientModel.serializeUser ());
passport.deserializeUser (clientModel.deserializeUser ());
我修好了

  • 我必须为每一个本地策略给出不同的名称
  • 我必须根据用户的类型(在我的例子中是客户端或管理员)进行序列化/反序列化

  • 我必须为每一个本地策略给出不同的名称
    我必须根据用户类型(在我的情况下是客户端或管理员)进行序列化/反序列化。

    您还需要使用单独的passport实例

    var Passport = require ('passport');
    var passportAdmin = new Passport.Passport();
    var passportClient = new Passport.Passport();
    

    第二种策略是否会在某个时候调用?我认为第一个总是处理身份验证过程,因为两者都是LocalStrategy,并且没有不同的名称。你应该给它起不同的名字。你能发布固定版本的代码吗