【发布时间】:2016-02-24 11:34:12
【问题描述】:
我正在寻找一种方法来为 Passport.js 使用 Twitter 策略,而无需在数据库中使用会话集合/表。 这样做的原因是我们将所有数据保存在会话集合中,这些数据可能会变得非常大,并且每当用户发出请求时我们都会保存数据库往返,因为我们不必每次都去数据库来获取会话数据。
无论如何,我们应该能够使用令牌(JSON Web Token)来验证用户身份,正如这篇精彩的文章所描述的那样:
https://scotch.io/tutorials/authenticate-a-node-js-api-with-json-web-tokens
但我很困惑,为什么没有一种简单的方法可以用 Passport 做到这一点? (这篇文章在没有 Passport 的情况下做所有事情 - 但肯定 Passport 已经涵盖了这一点?)。
也许我想太多了,这样做的方法只是省略我在 Express 中使用数据库会话的调用,然后 Passport 已经足够聪明来处理 JWT?不知何故,我对此表示怀疑。
例如,在我的 Express 服务器中仅注释掉这段代码肯定是不够的:
//app.use(expressSession({
// secret: 'arrete_x_paulette',
// store: new MongoStore({mongooseConnection: mongoose.connection}),
// saveUninitialized: true,
// resave: true,
// cookie: {
// secure: false,
// maxage: 6000000
// },
// proxy: false
//}));
和
//app.use(passport.session());
那么,使用 Passport 就够了吗?
为什么有人会使用存储在数据库中的会话而不是使用基于 JWT 的身份验证?
【问题讨论】:
-
如果有人能回答这个问题,我将不胜感激。我也有同样的问题。
-
想开始赏金还是应该冒险?
-
@ChaseIsley 认为我想通了,我认为您需要做的就是注释掉 MongoStore 部分或 expressSession 选项,然后它将只使用 cookie
标签: node.js express passport.js jwt express-jwt