【发布时间】:2016-10-16 16:05:59
【问题描述】:
我确信会有一个明显的答案,但我在官方文档和互联网上的任何地方都没有找到任何解决方案。
使用 Passport.js 我们必须定义两种方法,一种用于序列化,另一种用于反序列化用户会话。
来自official documentation 我读到:
只有用户 ID 被序列化到会话中,从而保持会话中存储的数据量很小。后续收到请求时,用这个ID查找用户,会恢复到req.user
我的第一个问题涉及到术语序列化,根据Wikipedia:
序列化是将数据结构或对象状态转换为可以存储的格式的过程
但是在一个完全由 Javascript 制作的世界中,既然用户是对象,而对象是本机的,我们为什么要序列化?我们可以将整个对象存储在会话中,有什么禁止的?
然后,反序列化是一个需要大量资源消耗的过程,因为与数据库交互。那么,为什么要在任何请求下执行反序列化呢?难道我们不能只做一次并保留结果以供进一步请求吗?
我阅读了很多关于 PassportJS 的内容,并且我能够实现登录系统,但我想澄清这些晦涩的方面。 谢谢。
【问题讨论】:
标签: javascript node.js express passport.js