我正在NodeJS中实现一个Web应用程序,用户在访问每个页面之前需要登录。
我使用Passport模块实现了用户身份验证。根据护照指南页面,我在护照配置中创建了 serializeUser 和 deserializeUser 用户功能,以便使用会话跟踪。
在deserializeUser函数中,我从cookie中获取存储的信息,传入函数的第一个参数,并在数据库的user表中搜索以检索用户详细信息并将其传递给完成功能。
但是我看到在每个请求中调用反序列化函数并查询数据库以检索用户详细信息并将其传递给完成函数。
我的问题是,这个常量查询数据库(在性能和逻辑方面),获取用户对象,是正确的做法,还是我理解并实现了错误的东西。可能做一些不是真的需要吗?
答案 0 :(得分:2)
这是正确的行为是:deserializeUser()
将针对每个请求触发,如果需要从数据库加载数据,那么就会发生这种情况。通常这只是一个问题,因为负载会很快,但如果有问题,你可能会在你的应用程序中遇到更广泛的数据库/网络问题。
(如果需要,没有什么可以阻止你缓存数据)。