NodeJS / Express:从请求中获取用户名和密码
Posted
技术标签:
【中文标题】NodeJS / Express:从请求中获取用户名和密码【英文标题】:NodeJS / Express: Get Username and Password from Request 【发布时间】:2021-01-04 14:04:32 【问题描述】:我正在使用 NodeJS 和 Express,我想从请求中获取用户名和密码参数。我已经搜索了一段时间,但我找不到我的答案。
我想接受来自 cURL 命令的 user
参数:
curl --request --POST -u USERNAME:PASSWORD -H "Content-Type:application/json" -d "\"key":\"value\"" --url https://api.example.com/my_endpoint
在我的应用程序中:
app.post('/my_endpoint', async (req, res, next) =>
const kwargs =. req.body;
const userName = req['?'];
const password = req['?'];
);
【问题讨论】:
【参考方案1】:您将凭据作为基本身份验证标头发送(因为您使用 curl 的 -u
选项)。因此,为了从您的请求中获取凭据,您需要访问此标头并对其进行解码。这是执行此操作的一种方法:
app.post('/my_endpoint', async (req, res, next) =>
if(req.headers.authorization)
const base64Credentials = req.headers.authorization.split(' ')[1];
const credentials = Buffer.from(base64Credentials, 'base64').toString('utf8');
const [username, password] = credentials.split(':');
console.log(username, password);
);
【讨论】:
找了这么久的简单答案,谢谢!【参考方案2】:How do I consume the JSON POST data in an Express application
我会这样做
假设您的通话包含这样的 json 内容:
删除-u USERNAME:PASSWORD
编辑 -d " "username": "user", "password": "test" "
curl --request --POST -H "Content-Type:application/json" -d " "username": "user", "password": "test" " --url https://api.example.com/my_endpoint
然后您可以使用以下命令访问这些变量:
const userName = req.body.username;
const password = req.body.password;
请注意,您需要在 express 中使用 bodyParser 中间件才能访问正文变量。
【讨论】:
我绝对没有在请求正文中传递用户名和密码。这不安全。 取决于加密但是是的,这不是最好的方法!对不起以上是关于NodeJS / Express:从请求中获取用户名和密码的主要内容,如果未能解决你的问题,请参考以下文章
无法使用 Express.js 从请求中获取 POST 正文
如何使用Express在NodeJS中的GET请求中进行GET请求
从 NodeJS 中的 AJAX 请求中获取数据并存储在 DB 中