我正在尝试将PassportJs用于多种类型的用户(每个用户都有不同的模型)。我究竟做错了什么?

问题描述:

我想使用Expressport使用PassportJs使用多种类型的用户(每一个都有不同的模型)。 当我用它只有一种类型的用户它是好的,但是当我添加第二个它不起作用。任何想法 ?我正在尝试将PassportJs用于多种类型的用户(每个用户都有不同的模型)。我究竟做错了什么?

// 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()); 

我固定它

  1. 我不得不给不同的名称为每个本地策略
  2. 我不得不序列化/根据用户的类型反序列化(客户端或管理员在我的情况) 。
+0

就是所谓的一段时间内第二次战略护照的单独的实例?我认为第一个总是处理身份验证过程,因为两者都是LocalStrategy,并且每个人都没有不同的名称。你应该把它命名为不同的。 – leobelizquierdo

+0

你可以发布固定版本的代码吗? –

我必须为每个本地策略提供不同的名称 根据用户类型(客户端或管理员在本例中),我必须序列化/反序列化。

你也想用

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