如何在没有任何模块的情况下从节点js中的JWT中提取信息?
How to extract information from a JWT in node js without any module?
你好,能帮帮我吗?
我正在尝试创建一个函数来保护 POST 和 DELETE 方法。
我的问题是,我的应用程序的所有经过身份验证的用户都可以删除其他用户的 post,如果他们知道 post 的 ID。
在我的 table 关系中,用户与 post 和 post 之间存在一对多关系,每个 属性 都有一个用户
我认为避免这种情况的最好方法是以某种方式提取 Headers 令牌并将其与保存每个 post
的用户 ID 进行比较
我正在使用 sqlite 数据库并使用 Strapi
另一个 api 在中间件中使用这个模块,但我不太清楚如何在 satrapi 中应用它,文档有点混乱
const jwt = require('jsonwebtoken');
/*==============
verify token
================*/
let verificarToken = (req, res, next) => {
let token = req.get('token')
/*res.json({
ok:true,
token: token
})*/
jwt.verify(token, process.env.SEED_TOKEN, (err, decoded) => {
if (err) {
return res.status(401).json({
ok: false,
err: "token invalido"
});
}
req.usuario = decoded.usuario;
next();
/* el next ejecuta la siguiente peticion luego de haber pasado el middleware*/
})
}
您可以在找到请求用户后执行以下操作(正如您在上面找到的那样)
- 在访问删除功能之前创建一个中间件。
- 在该中间件中创建一个函数来检查 post id 是否属于请求用户。
- 如果是,允许他们访问下一个功能或return 'bad request'。
是的,您可以从令牌中提取数据。
这样试试:
首先安装atob:npm i atob
const atob = require("atob");
var base64Url = token.split(".")[1];
var base64 = base64Url.replace("-", "+").replace("_", "/");
var tokenData = JSON.parse(atob(base64));
console.log(tokenData);
你好,能帮帮我吗?
我正在尝试创建一个函数来保护 POST 和 DELETE 方法。
我的问题是,我的应用程序的所有经过身份验证的用户都可以删除其他用户的 post,如果他们知道 post 的 ID。
在我的 table 关系中,用户与 post 和 post 之间存在一对多关系,每个 属性 都有一个用户
我认为避免这种情况的最好方法是以某种方式提取 Headers 令牌并将其与保存每个 post
的用户 ID 进行比较我正在使用 sqlite 数据库并使用 Strapi
另一个 api 在中间件中使用这个模块,但我不太清楚如何在 satrapi 中应用它,文档有点混乱
const jwt = require('jsonwebtoken');
/*==============
verify token
================*/
let verificarToken = (req, res, next) => {
let token = req.get('token')
/*res.json({
ok:true,
token: token
})*/
jwt.verify(token, process.env.SEED_TOKEN, (err, decoded) => {
if (err) {
return res.status(401).json({
ok: false,
err: "token invalido"
});
}
req.usuario = decoded.usuario;
next();
/* el next ejecuta la siguiente peticion luego de haber pasado el middleware*/
})
}
您可以在找到请求用户后执行以下操作(正如您在上面找到的那样)
- 在访问删除功能之前创建一个中间件。
- 在该中间件中创建一个函数来检查 post id 是否属于请求用户。
- 如果是,允许他们访问下一个功能或return 'bad request'。
是的,您可以从令牌中提取数据。
这样试试:
首先安装atob:npm i atob
const atob = require("atob");
var base64Url = token.split(".")[1];
var base64 = base64Url.replace("-", "+").replace("_", "/");
var tokenData = JSON.parse(atob(base64));
console.log(tokenData);