【问题标题】:Get username from jwt Express app从 jwt Express 应用程序获取用户名
【发布时间】:2018-11-08 01:18:11
【问题描述】:

我的代码中有 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
    });
  }

这是我添加订单的帖子 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);
  });

});

提前致谢!

【问题讨论】:

    标签: node.js rest express authentication jwt


    【解决方案1】:

    代替

    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);
      });
    
    });

    【讨论】:

      猜你喜欢
      • 2020-10-26
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 2019-06-30
      • 2016-10-29
      • 2021-05-14
      • 2018-11-23
      • 1970-01-01
      相关资源
      最近更新 更多