我正在尝试将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());
我固定它
- 我不得不给不同的名称为每个本地策略
- 我不得不序列化/根据用户的类型反序列化(客户端或管理员在我的情况) 。
答
我必须为每个本地策略提供不同的名称 根据用户类型(客户端或管理员在本例中),我必须序列化/反序列化。
答
你也想用
var Passport = require ('passport');
var passportAdmin = new Passport.Passport();
var passportClient = new Passport.Passport();
就是所谓的一段时间内第二次战略护照的单独的实例?我认为第一个总是处理身份验证过程,因为两者都是LocalStrategy,并且每个人都没有不同的名称。你应该把它命名为不同的。 – leobelizquierdo
你可以发布固定版本的代码吗? –