使用mongoose的ObjectId进行授权

时间:2017-08-15 20:29:04

标签: node.js express authentication mongoose jwt

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

示例sudo代码:

db:

中的示例
[ObjectId]: {
     myStuff: 'foo'
}

检查授权的示例:

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

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

1 个答案:

答案 0 :(得分:1)

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

来自MongoDB Documentation

  

12字节的ObjectId值包括:

     

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

     

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

     

一个2字节的进程ID,

     

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

从证券的角度来看,这将是一种不好的做法。

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