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/