【问题标题】:using mongoose's ObjectId for authorization使用 mongoose 的 ObjectId 进行授权
【发布时间】:2018-01-23 20:35:53
【问题描述】:

使用 mongoose 生成的 ObjectId 作为检查数据是否属于某个用户的一种方式是一种好习惯吗?

示例 sudo 代码:

数据库中的示例:

[ObjectId]: {
     myStuff: 'foo'
}

检查授权示例:

if (jwt.bar.ObjectId === ObjectId) {
     //then you can mod this data because it is yours
}

如果没有,推荐的解决方法是什么?

【问题讨论】:

标签: node.js express authentication mongoose jwt


【解决方案1】:

您不能将 ObjectID 用作会话标识符,因为一旦创建文档,它就永远不会更新,而且它是可预测的。

来自MongoDB Documentation

12 字节的 ObjectId 值包括:

一个 4 字节的值,表示自 Unix 纪元以来的秒数,

一个 3 字节的机器标识符,

一个 2 字节的进程 ID,

和一个 3 字节的计数器,从一个随机值开始。

从安全的角度来看,这是一种不好的做法。

使用正确的会话 ID 来识别来自用户的请求。

【讨论】:

  • @谢谢。使用 NPM 的 'uniqid' 之类的东西来生成 UID,然后将其保存在用户的个人资料下以用于相同的提议是否是个好主意?
猜你喜欢
  • 2019-04-29
  • 2015-02-10
  • 2015-03-13
  • 1970-01-01
  • 1970-01-01
  • 2018-01-23
  • 1970-01-01
  • 1970-01-01
  • 2020-10-06
相关资源
最近更新 更多