Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js JWT令牌不特定于用户_Node.js_Mongodb_Express_Jwt_Express Jwt - Fatal编程技术网

Node.js JWT令牌不特定于用户

Node.js JWT令牌不特定于用户,node.js,mongodb,express,jwt,express-jwt,Node.js,Mongodb,Express,Jwt,Express Jwt,在我的NodeJs(express+MongoDB)中,我使用JWT令牌来允许用户路由,例如更改密码、更新用户 但是,给定的JWT令牌并不特定于一个用户,因为它允许另一个用户访问所有路由,并在给定正确路由(包括id)的情况下对任何用户进行更改。路由根据参数中的id工作。用户id也集成在令牌的有效负载中 如何使每个用户都可以访问自己的路由而不是其他用户的路由?好的,让我们看一个示例 如果我的用户试图访问他自己的帖子/post:id,那么路径应该是这样的,并且id作为查询参数随请求一起发送,但是如果

在我的NodeJs(express+MongoDB)中,我使用JWT令牌来允许用户路由,例如更改密码、更新用户

但是,给定的JWT令牌并不特定于一个用户,因为它允许另一个用户访问所有路由,并在给定正确路由(包括id)的情况下对任何用户进行更改。路由根据参数中的id工作。用户id也集成在令牌的有效负载中


如何使每个用户都可以访问自己的路由而不是其他用户的路由?

好的,让我们看一个示例

如果我的用户试图访问他自己的帖子
/post:id
,那么路径应该是这样的,并且
id
作为查询参数随请求一起发送,但是如果您不想这样做的话 然后假设用户已经将令牌发送到
/posts
,并向其发出请求 然后

router.get('/posts',(req,res)=>){
//验证令牌
//如果令牌有效,则继续//否则发送(403)
//从中获取用户ID
res.redirect('/posts/);
}

路由通常发生在访问控制检查之前,因此所有用户通常能够“访问所有路由”(但不执行路由集中的每个操作)。如果除了令牌之外,还希望通过用户id限制访问,请在操作/操作前回调中验证这两个选项。
router.get('/posts',(req,res)=>){
  //verfiy the token 
  //if the token is valid cont // else send(403)
  // get the userID from it 
  res.redirect('/posts/<userId>);
}