会话未在 Express 中创建

Session not created in Express

这里是项目[开发分支]:https://github.com/asid-team/library_system

我正在开发图书馆应用程序。它是服务器端呈现的,我正在使用 Express 和 Passport 进行身份验证和 MongoDB.

问题是,我想要两个用户角色(1 个用于普通用户,1 个用于图书馆员,即在图书馆工作的人)。所以,我想出了链接 https://github.com/asid-team/library_system/tree/dev/config/routes

上显示的内容

它非常适合用户。 Passport 完成所有工作,并在成功登录后生成 req.user。但是,图书管理员部分似乎无法正常工作:它不会保存图书管理员会话。

您能发现我的方法/代码中的错误吗?

编辑: 当我 console.log 会话的 req 时,我得到:

sessions:
  { UaRq2ZBvDAkeckjWJU38wfdlalPmKKwb: '{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"flash":{},"passport":{}}',
    zl24_yTpebRC6rP4I9pcNwCVKNwXa2zH: '{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"flash":{},"passport":{"user":"5a620ae6091a07cf8dc82fc9"}}',
    '359N-18VDvgNIDzVj-BQ_t_vdQ8Iav7H': '{"cookie":{"originalMaxAge":null,"expires":null,"httpOnly":true,"path":"/"},"flash":{},"passport":{"user":"5a61f14bb4bd20c692aa87e8"}}' },

这两个用户 5a620ae6091a07cf8dc82fc95a61f14bb4bd20c692aa87e8 是用户。

问题是你定义了passport.serializeUserpassport.deserializeUser两次。护照对象在您的用户和图书馆员路线中是相同的,因此实际上忽略了一个。

可能有很多不同的方法来解决这个问题,有些方法比其他方法更老套,但是 this Passportjs Github issue 进行了一些讨论。

最终,您需要一组序列化和反序列化函数来处理用户和图书管理员。