node.js - 从 jwt Express 应用程序获取用户名
问题描述
我的代码中有 3 条路线,分别用于用户、产品和订单。我使用 jwt 并为用户生成令牌,并且我想将订单分配给令牌所有者。这是我的订单模型:
var mongoose = require('mongoose');
var orderSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId ,
product: {type: mongoose.Schema.Types.ObjectId, ref: 'Product'},
quantity: {type: Number , default: 1},
user_name: String
});
module.exports = mongoose.model('Order', orderSchema);
这是我检查身份验证的中间件(它作为 checkAuth 导入):
module.exports = (req,res,next) => {
try {
var decoded = jwt.verify(req.headers.token, secretjwt);
req.userData = decoded;
next();
} catch (error) {
return res.status(401).json({
'error': 'Auth Failed',
'details': error.message
});
}
这是我用于添加订单的 post api,我应该写什么作为 user_name 以将其分配给用户(我不想将用户名作为正文参数)?
router.post('/newOrder', checkAuth, (req,res,next) => {
var order = new Order({
quantity: req.body.quantity,
product: req.body.productId,
user_name: // WHAT SHOULD IT BE?
});
order.save()
.then(result => {
res.status(200).json(result);
})
.catch(err => {
res.json(200);
});
});
提前致谢!
解决方案
代替
req.userData = 解码 把 req.body.userData = 解码
并将 user_name: req.body.userData 放入以下片段
router.post('/newOrder', checkAuth, (req,res,next) => {
var order = new Order({
quantity: req.body.quantity,
product: req.body.productId,
user_name: // WHAT SHOULD IT BE?
});
order.save()
.then(result => {
res.status(200).json(result);
})
.catch(err => {
res.json(200);
});
});
推荐阅读
- regex - replace CamelCase function argument with SNAKE_CASE
- apache-kafka - kafka + 从主题日志文件中读取
- php - 如何在 MySQL 的消息表中选择用户并按日期排序?
- c# - Kendo UI 和 ASP.NET MVC:服务器端过滤
- scala - 无法在 Scala HTTP Akka 中测试 POST 请求
- java - 基于搜索从网站抓取
- reactjs - 获取此 Twitter 的 api 响应 {"errors":[{"code":215,"message":"Bad Authentication data."}]} 解决方案
- java - 如何让 jUnit 类有参数
- angular - 以角度跳过或替换结果集(API调用)中的未定义值
- docker-ucp - 如何在 AWS EC2 实例上安装 Docker UCP 和 DTR 安装。如何访问 UCP UI..?