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

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

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

最佳答案

您有两种选择:


使用持久性会话存储,例如MongoDBRedisPostgreSQL
完全不要使用会话,而应使用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),或者完全放弃Passport并直接在自定义中间件中使用jsonwebtoken

关于javascript - Passport.js无状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39360071/

10-15 14:49