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