令牌无法访问当前登录用户的令牌"/>
Node Js:如何防止另一个登录用户的 jwt 令牌无法访问当前登录用户的令牌
我想实现这样的功能,以验证我当前的令牌无法访问另一个用户。
例如
- 我已登录并获得用户 A 的令牌,使用此令牌,我可以获得其他数据
- 我以另一个名为 B 的用户身份登录并获得令牌
现在怎么样了,我可以用B的Token获取A用户数据的其他数据
所以我想阻止它。
回答如下:为了防止一个用户使用另一个用户的令牌访问数据,您可以在后端使用 JWT(JSON Web 令牌)和 express-jwt 库。
当用户登录时,您可以生成一个 JWT 令牌,其中包含用户 ID 作为有效负载。当用户请求访问他们的数据时,您可以验证 JWT 令牌并检查令牌中的用户 ID 是否与请求数据的 ID 匹配。
下面是如何使用express-jwt验证JWT token的例子:
const jwt = require('jsonwebtoken');
const expressJwt = require('express-jwt');
// set up JWT secret
const jwtSecret = 'your_jwt_secret';
// generate JWT token
const token = jwt.sign({ userId: user.id }, jwtSecret, { expiresIn: '1h' });
// verify JWT token with express-jwt middleware
app.get('/user-data', expressJwt({ secret: jwtSecret }), (req, res) => {
const userId = req.user.userId;
// check if userId matches requested data
if (userId === req.query.userId) {
// return user data
} else {
// return error response
}
});
在此示例中,jwtSecret 是用于签署和验证 JWT 令牌的密钥。令牌是使用 jwt.sign 方法生成的,并包含用户 ID 作为有效负载。
当用户向 /user-data 发出 GET 请求时,express-jwt 中间件使用 jwtSecret 验证 JWT 令牌。如果令牌有效,则 req.user 对象将包含解码后的有效负载,在本例中为 { userId: user.id }。
然后您可以检查 req.user 对象中的 userId 是否与请求的数据匹配,并返回适当的响应。
更多推荐
Node Js:如何防止另一个登录用户的 jwt 令牌无法访问当前登录用户的令牌
发布评论