javascript - Passport.js 无状态

标签 javascript node.js passport.js

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

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

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

最佳答案

你有两个选择:

  1. 使用持久 session 存储,例如MongoDB , Redis , 或 PostgreSQL
  2. 根本不使用 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/

相关文章:

node.js - passport-google-oauth 无法注销用户

javascript - wordpress:有没有办法 Hook 操作/过滤器调用

javascript - 如何判断页面是否已在 Firebug 或 Chrome 开发者工具中重新加载?

node.js - Passport req.logIn 从不调用 serializeUser

node.js - 前端客户端的用户对象

windows - Nodejs 似乎不起作用; npm 确实有效,但是

javascript - 刷新时出现 Ember 错误

javascript - 将记录列表导出到不带标签的 JavaScript 对象数组

javascript - 为什么 Date.parse ('COVINGTONOFFICE-2' ) 返回真实日期?

javascript - 在 CommonJS Node 应用程序中导入 ES6 模块?