Passport.js无国籍

时间:2016-09-07 01:41:40

标签: javascript node.js passport.js

我正在使用Passport.js本地策略在我的应用中处理身份验证。每当我进行更改时,我也会使用Nodemon自动刷新服务器。

问题是每当我进行更改时,我必须再次登录到应用程序。目前这只是开发,但同样的概念适用于处理请求的多个服务器(例如EC2负载均衡器)。所以我的问题是,如何在保留用户状态的同时使Passport.js无状态?

似乎必须有一种方法来保持服​​务器之间的状态和/或重新启动服务器。

1 个答案:

答案 0 :(得分:2)

您有两种选择:

  1. 使用持久会话存储,例如MongoDBRedisPostgreSQL
  2. 根本不使用会话,而是使用JSON Web Tokens,即JWT。
  3. 如果您已经拥有共享数据库,则第一个选项需要较少的设置,只需实例化商店并将其传递给您的应用程序,例如:

    const session = require('express-session');
    const MongoStore = require('connect-mongo')(session);
    
    app.use(session({
        secret: 'foo',
        store: new MongoStore(options)
    }));
    

    第二个选项需要一个不同的Passport策略,如passport-jwt,或者可能完全抛弃Passport并直接在自定义中间件中使用jsonwebtoken