这是项目[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"}}' },
这两个用户5a620ae6091a07cf8dc82fc9
和5a61f14bb4bd20c692aa87e8
是用户。
答案 0 :(得分:0)
问题是您定义了passport.serializeUser
和passport.deserializeUser
两次。用户和图书馆员路线中的护照对象是相同的,因此有一个被忽略。
有很多不同的方法可以解决这个问题,有些方法比其他问题更为讨厌,但this Passportjs Github issue有一些讨论。
最终,您需要一组序列化和反序列化功能来处理用户和图书馆员。