【问题标题】:Cant access property of req.user无法访问 req.user 的属性
【发布时间】:2016-06-05 20:05:18
【问题描述】:

我正在使用passport.js在Node中进行身份验证。

console.log(req.user);

返回

{ group: 'CuManager',
  password: 'password',
  username: 'administrator',
  cu_id: 2,
  _id: 569fd3f4328ef124be533caf }

但是

console.log(req.user.cu_id);

返回

undefined

我在想 cu_id 属性可能由于序列化/反序列化而不可用,但它就在那里。我只是无法访问它。 我怎样才能做到这一点? 我需要它

find({cu_id : req.user.cu_id})

顺便说一句,我不禁认为 passport.js 有点过于复杂(也许我们只是相处不来)。我还能用什么来验证 Node 中的用户(我使用 express)?

【问题讨论】:

  • 试试console.log(req.user['cu_id']);
  • @peteb,已经尝试过了 - 仍然未定义。

标签: node.js express mongoose passport.js


【解决方案1】:

如果 req.user 是 Mongoose 文档,您可能应该将 cu_id 添加到正确的架构中。

否则,您可以使用req.user.toObject().cu_id 之类的东西来访问该属性,或者确保以某种方式将doc.toObject() 的结果分配给req.user

至于 Passport 替换:这取决于您希望如何对用户进行身份验证。如果您是POST'ing 登录表单到 Express 路由,您可以自己执行密码验证和会话设置。

【讨论】:

  • 就是这样,我忘了用 cu_id 更新架构。谢谢!
【解决方案2】:

尝试用 JSON 解析它。

JSON.parse(req.user)['cu_id']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-21
    • 2014-09-19
    • 2020-10-11
    • 2015-01-28
    • 2013-05-20
    • 2018-04-24
    • 2017-04-25
    相关资源
    最近更新 更多