【问题标题】:Can not use jwt.sign,res.headers is not a function不能使用 jwt.sign,res.headers 不是函数
【发布时间】:2020-10-10 21:27:09
【问题描述】:

以下代码给了我 jwt.sign 的错误(res.headers 不是函数) 有什么建议? 是因为语法吗?

 app.post('/logIn', async (req, res) => {
 //Checking if email exists
 const user = await User.findOne({username:req.body.username})
 if (!user) return res.status(400).send('Invalid Username')
 //Password is correct
 const validPass = await bcrypt.compare(req.body.password,user.password)
 if (!validPass) return res.status(400).send('Invalid password')

 //Create and assign a token

 const token = jwt.sign({user},'secretkey')
 res.headers('auth-token',token).send(token)

 // res.send('Logged in ')


})

【问题讨论】:

  • 错误是什么?提示您不想传递所有用户,否则将包括密码和其他无用信息,只需要一个 id
  • 我收到未处理的承诺错误
  • 在哪一行?如果你使用 async/await,你也应该使用 try/catch
  • 我再次检查,它说 res.headers 不是函数
  • 删除sres.header(..

标签: node.js express jwt


【解决方案1】:

您可以尝试使用res.header 代替res.headers 吗?

【讨论】:

    【解决方案2】:

    这里的jwt是什么?你定义了吗?

    var jwt = require('express-jwt');
    
    app.use(jwt({
      secret: 'hello world !'
    }));
    
    const token = jwt.sign({user})
    

    您还可以在签署令牌之前定义秘密。

    【讨论】:

    • 是的,我确实定义了它
    • 您可以在签署令牌之前定义秘密。你能设计这样的代码吗?
    • 我会尝试一下
    • 弹出的错误是 res.headers is not a function
    • res.cookie('jwt',token, { maxAge: 3600000 }) 您实际上应该设置 cookie 而不是标头。
    猜你喜欢
    • 2016-07-17
    • 2018-03-02
    • 2020-03-22
    • 1970-01-01
    • 2019-11-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    相关资源
    最近更新 更多