【问题标题】:Cluster with Passport NodeJs使用 Passport NodeJ 的集群
【发布时间】:2018-10-23 09:01:04
【问题描述】:

在我们的应用程序中,我们使用 Passport 中间件(localStrategy,会话存储在 MongoStore 中)。我们决定使用集群来加速和简化服务器。 问题是,在此更改后,护照始终处于“未授权”状态。 是否可以将护照(localStrategy)与集群一起使用?

【问题讨论】:

    标签: node.js express cluster-computing


    【解决方案1】:

    Passport 将会话数据存储在内存中。使用集群,护照可以将数据存储在集群中,其他请求可以由其他集群处理。您必须使用会话存储。我推荐使用connect-redis

    这些链接也很有帮助:

    1-https://blog.risingstack.com/node-hero-node-js-authentication-passport-js/

    2-Using passport and OAuth with connect-redis

    3-https://afshinm.name/2014/06/26/using-redis-as-session-store-for-expressjs-passportjs-settings/

    4-https://www.airpair.com/express/posts/expressjs-and-passportjs-sessions-deep-dive


    更新

    对于 MongoDb,请阅读这些链接

    1-Can't store session in MongoDB with passport

    2-How can I manage sessions with Passport JS for some routes using express?

    【讨论】:

    • 谢谢,我们将护照会话数据存储在 MongoStore (MongoDB) 中。这个选项是否不够好?我还应该使用 connect-redis 吗?
    • 你的意思是你自己写会话存储??是的,你可以使用 MongoDb,但是糟糕的编码会影响性能和其他方面! @VictorRodniansky
    • 我的意思是,我们正在做:this.app.use(session({ store: new MongoStore({url:`mongodb://)
    • 可以,你也可以用
    • 我的意思是,我们正在做:this.app.use(session({ store: new MongoStore({url:`mongodb:// ............ ... }); 我们将会话存储在 mongo.. this.app.use(this.passport.initialize()); this.app.use(this.passport.session()); 所以不是 connect-redis,我们使用 mongoDb。不知何故,我总是收到“未授权”消息,即使只有一个分叉。
    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 2016-02-24
    • 2016-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    相关资源
    最近更新 更多