【问题标题】:Post method is not sending JWT in nodeJSPost 方法未在 nodeJS 中发送 JWT
【发布时间】:2020-10-10 17:25:14
【问题描述】:

我正在使用邮递员来测试我的路线,但我不知道为什么它没有向数据库发送令牌。 有什么建议吗?

//Add new user A.K.A Registration

app.post('/addUser', (req, res) => {
    const addUser = new User({username: req.body.username, password: req.body.password})
    addUser.save().then(result => res.status(200).json(result).catch((err) => console.log(err)))
    jwt.sign(addUser,'secretkey',{expiresIn:'30h'},(err,token)=>{
        res.json(token)
    })
})

【问题讨论】:

  • 你在哪里向数据库发送令牌?相反,您发送了两次响应。
  • 感谢您的回复,我真的不知道在哪里获取令牌,这就是为什么我认为我必须与注册用户一起发送它
  • 是的,您必须将其与注册用户一起发送,但要使其成为单个响应。然后将令牌保存在客户端,并将其与授权标头中的每个请求一起发送到受保护的路由。
  • 所以 addUser,save() 不再是必要的了
  • 您需要它来将用户的数据保存在数据库中。看我的回答,希望你能得到你想要的。

标签: javascript node.js jwt


【解决方案1】:

您发送了两次响应,这就是为什么您没有得到令牌以响应邮递员的请求。试试这个代码。

app.post('/addUser', (req, res) => {
    const addUser = new User({username: req.body.username, password: req.body.password})
    addUser.save()
    .then( result => {
          jwt.sign(addUser,'secretkey',{expiresIn:'30h'},(err,token)=>{
                  res.status(200).json(result,token);
          })
    }
    .catch((err) => console.log(err)))
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多