【问题标题】:NodeJS Passport session serialize - deserialize user into session?NodeJS Passport 会话序列化 - 将用户反序列化到会话中?
【发布时间】:2014-12-12 19:42:54
【问题描述】:

我正在用 NodeJS 实现一个 Web 应用程序,其中要求用户在访问每个页面之前都必须登录。

我使用 Passport 模块实现了用户身份验证。根据护照指南页面,我在护照配置中创建了 serializeUserdeserializeUser 用户功能,以便使用会话跟踪。

在deserializeUser函数中,我从cookie中获取存储的信息,传入函数的第一个参数,在数据库中的user表中搜索获取用户详细信息并传递给done 功能。

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

我的问题是,这种不断地查询数据库(在性能和逻辑方面)以获取用户对象是否是正确的做法,或者我理解并实现了错误。可能做一些并不真正需要的事情?

【问题讨论】:

  • 是的,这确实是正确的惯例。如果您不想查询数据库,您可以将用户存储在内存中。但我不会太担心。
  • @laggingreflex 谢谢你的回答。我也考虑过用户的内存节省。但我怀疑这是否是正确的做法。再次感谢

标签: node.js session serialization passport.js


【解决方案1】:

这是正确的行为是的:deserializeUser() 将随每个请求触发,如果这需要从您的数据库中加载数据,那么就会发生这种情况。通常这根本不会成为问题,因为负载会很快,但如果它出现问题,那么您的应用程序中可能存在更广泛的数据库/网络问题。

(如果需要,没有什么可以阻止您缓存数据)。

【讨论】:

    猜你喜欢
    • 2017-11-05
    • 2017-07-15
    • 2016-04-10
    • 1970-01-01
    • 2015-03-31
    • 2021-09-11
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多