会话未在 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"}}' },
这两个用户 5a620ae6091a07cf8dc82fc9
和 5a61f14bb4bd20c692aa87e8
是用户。
问题是你定义了passport.serializeUser
和passport.deserializeUser
两次。护照对象在您的用户和图书馆员路线中是相同的,因此实际上忽略了一个。
可能有很多不同的方法来解决这个问题,有些方法比其他方法更老套,但是 this Passportjs Github issue 进行了一些讨论。
最终,您需要一组序列化和反序列化函数来处理用户和图书管理员。
这里是项目[开发分支]: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
是用户。
问题是你定义了passport.serializeUser
和passport.deserializeUser
两次。护照对象在您的用户和图书馆员路线中是相同的,因此实际上忽略了一个。
可能有很多不同的方法来解决这个问题,有些方法比其他方法更老套,但是 this Passportjs Github issue 进行了一些讨论。
最终,您需要一组序列化和反序列化函数来处理用户和图书管理员。