gpt4 book ai didi

mongodb - 对每个请求进行反序列化?这不是不必要的数据库读取吗?

转载 作者:行者123 更新时间:2023-12-02 16:53:03 24 4
gpt4 key购买 nike

Understanding passport serialize deserialize

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

我有点理解它们的功能..但有些东西似乎不对。

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

passport.deserializeUser is invoked on every request by passport.session. It enables us to load additional user information on every request. This user object is attached to the request as req.user making it accessible in our request handling.

这意味着每个请求都会运行一个数据库请求来检索用户对象?我的应用程序绝对不需要数据库请求来获取每个请求的完整用户对象。事实上,我想不出有哪个应用程序需要这样做。

因此,如果我只注册序列化函数而不是反序列化函数..这是停止 Passport 将整个用户对象/mongo 文档分配给 session 的最佳实践,同时减少每页的数据库读取计数/API请求?

最佳答案

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

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

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

但通常的做法确实是根据每个请求从数据库恢复用户对象。成本几乎为零(~1ms),所以我不会真正担心它。

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com