Understanding passport serialize deserialize

现在,我从一系列指南和SO帖子中整理了我的第一个节点应用程序,现在偶然发现了 Passport 功能的序列化和反序列化...

我有点理解他们的功能..但是似乎有些不对劲。

http://toon.io/understanding-passportjs-authentication-flow/:



这意味着每个请求都运行一个db请求来检索用户对象吗?我的应用程序绝对不需要一个db请求就可以在每个单个请求上获取完整的userobject。实际上,我无法想到一个需要此请求的应用程序。

因此,如果我仅注册一个序列化函数而不是反序列化函数..这是停止 Passport 将整个用户对象/mongo doc分配给 session 的最佳实践,同时减少每页/api请求的db读取次数吗?

最佳答案

passport.session 是实际调用反序列化函数的中间件,因此更好的策略是将该中间件战略性地放置在您想要的位置:

app.get('/', ...);
app.use(passport.session());
app.get('/user', ...)

这样您就可以选择将加载或不加载用户对象的路由。

但通常的做法确实是在每次请求时从数据库中恢复用户对象。成本几乎为零(约 1 毫秒),所以我不会真的担心。

关于mongodb - 反序列化每个请求?这不是不必要的数据库读取吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31119162/

10-10 14:11
查看更多