会话未在Express

时间:2018-01-19 15:22:43

标签: node.js express session passport.js passport-local

这是项目[dev branch]: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是用户。

1 个答案:

答案 0 :(得分:0)

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

有很多不同的方法可以解决这个问题,有些方法比其他问题更为讨厌,但this Passportjs Github issue有一些讨论。

最终,您需要一组序列化和反序列化功能来处理用户和图书馆员。