Express.js:2 PasportJS的deserialize()方法在vhost中发生冲突

时间:2015-02-21 07:10:56

标签: node.js express passport.js vhosts

感谢您查看此问题。 我正在使用vhost建立一个包含3个快递应用的服务:

  1. 对于客户
  2. 主持人
  3. 对于管理员(此尚未开发)
  4. 因此,每个人都使用Passport.js进行不同的身份验证(不同的用户集合)。结束每一个成功验证。问题出在Passport's serialize()deserialize()方法中,该方法会覆盖另一个vhost中的上一个方法。我这样打电话给他们:

    server.js

    var app             = express(),
        clientApp       = require('./config/client/express')(db),
        moderatorApp    = require('./config/moderator/express')(db);
    
    app.use(vhost('localhost', mainApp)); 
    app.use(vhost('moderator.localhost', moderatorApp)); 
    app.listen(config.port);
    

    的客户机/ express.js

    // some express settings, router settings
    
    // and here I set passport
    passport.serializeUser(function(user, done) {
        done(null, user.id);
    });
    
    // Deserialize sessions
    passport.deserializeUser(function(id, done) {
        User.findOne({
            //....
        }) 
    });
    
    // Require necessary strategies
    require(path.resolve('config/moderator/strategies/local.js'))();
    
    // Return Express server instance
    return app;
    

    慢化剂/ express.js 除了client/express.js Passport's方法之外,这里几乎(制作一些安全性内容)与deserialize()相同。它在SuperUsers集合中查找用户。

    最后的问题

    问题是在身份验证后,护照无法从需要的集合中反序列化用户。我认为它会覆盖以前的护照反序列化设置。但是如果只留下一个护照序列化和反序列化方法(删除另一个序列化和反序列化方法,它会覆盖prvious)它完全正常。

    问题 如何在两个vhosts中设置护照的序列化和反序列化方法,它们不会相互冲突???

    请社区帮助我。

0 个答案:

没有答案