我正在使用 Passport.js 本地策略来处理我的应用程序中的身份验证。我还使用 Nodemon 在我进行更改时自动刷新服务器。
问题是每当我进行更改时,我都必须重新登录到应用程序。现在这只是开发,但相同的概念将适用于处理请求的多个服务器(例如 EC2 负载平衡器)。所以我的问题是,如何在保留用户状态的同时使 Passport.js 无状态?
似乎必须有一种方法来跨服务器和/或重新启动服务器来保存状态。
最佳答案
你有两个选择:
- 使用持久 session 存储,例如MongoDB , Redis , 或 PostgreSQL
- 根本不使用 session ,而是使用 JSON Web Tokens 又名 JWT。
如果您已经有一个共享数据库,第一个选项需要较少的设置,只需实例化商店并将其传递给您的应用程序,例如:
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直接在自定义中间件中。
关于javascript - Passport.js 无状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39360071/