Passport.js 无状态

Cha*_*ish 2 javascript node.js passport.js

我正在使用 Passport.js 本地策略来处理我的应用程序中的身份验证。我还在使用 Nodemon 进行更改时自动刷新服务器。

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

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

ves*_*sse 5

您有两个选择:

  1. 使用持久会话存储,例如MongoDBRedisPostgreSQL
  2. 根本不要使用会话,而是使用 JSON Web Tokens aka JWT。

如果您已经有一个共享数据库,第一个选项需要较少的设置,只需实例化商店并将其传递给您的应用程序,例如:

const session = require('express-session');
const MongoStore = require('connect-mongo')(session);

app.use(session({
    secret: 'foo',
    store: new MongoStore(options)
}));
Run Code Online (Sandbox Code Playgroud)

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