NodeJS Passport会话序列化 – 反序列化用户进入会话?

我正在NodeJS中实现一个Web应用程序,用户在访问每个页面之前需要login。

我使用Passport模块实现了用户authentication。 根据护照指南页面,我在护照configuration中创build了serializeUserdeserializeUser用户函数,以便使用会话跟踪。

在deserializeUser函数中,我从cookie中获取存储的信息,传递给函数的第一个参数,然后在数据库中的用户表中search以检索用户详细信息,并将其传递给done函数。

但是我看到,在每个请求中,反序列化函数被调用并查询数据库来检索用户的详细信息,并将其传递给done函数。

我的问题是,无论是不断查询数据库(在性能和逻辑上),获取用户对象,是正确的做法,还是我已经理解和实现了错误的东西。 可能做的事情不是真的需要?

这是正确的行为是的: deserializeUser()将触发每个请求,如果这需要从您的数据库中加载数据,那么会发生什么。 通常情况下,这不会成为一个问题,因为负载太快了,但是如果有问题的话,无论如何,你的应用可能会遇到更广泛的数据库/networking问题。

(如果需要的话,没有什么可以阻止你caching数据)。