【发布时间】:2019-06-06 19:40:48
【问题描述】:
在阅读了关于如何在 Passport 流程中反序列化和序列化用户工作的精彩描述后
Understanding passport serialize deserialize
我担心在每个请求上调用 deSerializeUser 对性能的影响。我见过的所有例子(见下文)都有反序列化用户调用看起来像数据库User.findById 来完成这项工作。假设您没有为所有资产使用 cdn,这意味着每次页面加载时都会调用许多数据库。
我的问题是我是否以某种方式误解了用例?是否有可能建议对给定网页的服务器的每个请求进行数据库类型调用?
如果答案是肯定的,我认为解决此问题的唯一方法是缓存用户凭据,但从安全角度来看,我真的很讨厌缓存凭据。
想法?
// used to serialize the user for the session
passport.serializeUser(function(user, done) {
done(null, user.id);
// where is this user.id going? Are we supposed to access this anywhere?
});
// used to deserialize the user
passport.deserializeUser(function(id, done) {
User.findById(id, function(err, user) {
done(err, user);
});
});
【问题讨论】:
标签: node.js passport.js passport-local