【问题标题】:Session not created in Express会话未在 Express 中创建
【发布时间】:2018-06-28 21:14:15
【问题描述】:

这里是项目[开发分支]: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。但是,图书管理员部分似乎无法正常工作:它没有保存图书管理员会话。

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

编辑: 当我控制台记录 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 这两个用户是用户。

【问题讨论】:

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


    【解决方案1】:

    问题是你定义了passport.serializeUserpassport.deserializeUser 两次。 Passport 对象在您的 User 和 Librarian 路由中是相同的,因此实际上忽略了一个。

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

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

    【讨论】:

    • 是的。我已经按照你的描述做了一些事情。我已将序列化和反序列化方法都移动到一个路由文件中,并将它们转移到另一个。然后我做了一个简单的 if 语句来检查哪个是哪个,并且只用 一个 方法对它们进行序列化和反序列化。
    猜你喜欢
    • 1970-01-01
    • 2018-02-21
    • 2021-10-07
    • 2020-11-16
    • 2014-01-23
    • 1970-01-01
    • 2022-08-06
    • 1970-01-01
    • 2021-11-10
    相关资源
    最近更新 更多