Passport.js 无国籍
Passport.js Stateless
我正在使用 Passport.js 本地策略来处理我的应用程序中的身份验证。我还使用 Nodemon 在我进行更改时自动刷新服务器。
问题是每当我进行更改时,我都必须重新登录到应用程序。现在这只是开发,但相同的概念将适用于处理请求的多个服务器(例如 EC2 负载平衡器)。所以我的问题是,如何在保持用户状态的同时使 Passport.js 无状态?
似乎必须有一种方法来跨服务器保持状态 and/or 服务器重新启动。
您有两个选择:
- 使用持久会话存储,例如MongoDB, Redis, or PostgreSQL
- 根本不使用会话,而是使用 JSON Web 令牌又名 JWT。
如果您已经有一个共享数据库,第一个选项需要较少的设置,只需实例化商店并将其传递给您的应用程序,例如:
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
app.use(session({
secret: 'foo',
store: new MongoStore(options)
}));
第二个选项需要不同的 Passport 策略,例如直接在自定义中间件中 passport-jwt or maybe ditching Passport completely and using jsonwebtoken。
我正在使用 Passport.js 本地策略来处理我的应用程序中的身份验证。我还使用 Nodemon 在我进行更改时自动刷新服务器。
问题是每当我进行更改时,我都必须重新登录到应用程序。现在这只是开发,但相同的概念将适用于处理请求的多个服务器(例如 EC2 负载平衡器)。所以我的问题是,如何在保持用户状态的同时使 Passport.js 无状态?
似乎必须有一种方法来跨服务器保持状态 and/or 服务器重新启动。
您有两个选择:
- 使用持久会话存储,例如MongoDB, Redis, or PostgreSQL
- 根本不使用会话,而是使用 JSON Web 令牌又名 JWT。
如果您已经有一个共享数据库,第一个选项需要较少的设置,只需实例化商店并将其传递给您的应用程序,例如:
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
app.use(session({
secret: 'foo',
store: new MongoStore(options)
}));
第二个选项需要不同的 Passport 策略,例如直接在自定义中间件中 passport-jwt or maybe ditching Passport completely and using jsonwebtoken。