gpt4 book ai didi

javascript - 无法将 jwt token 添加到 node.js 响应

转载 作者:行者123 更新时间:2023-12-01 01:42:51 25 4
gpt4 key购买 nike

我是 javascript 生态系统的新手,想要添加 jwt token 以从此注册路由器进行响应:

router.post('/register', (req, res)=> {

User.findOne({email: req.body.email})
.then(user => {
if(user) {
return res.status(400).json({error: 'Email already exists'});
} else {
const newUser = new User({
username: req.body.username,
email: req.body.email,
password: req.body.password
});

bcrypt.genSalt(10, (err, salt)=> {
bcrypt.hash(newUser.password, salt, (err, hash)=> {
if (err) throw err;
newUser.password = hash;
newUser.save()
.then(user => res.status(200).json(user)) //<=Problem is here
.catch(err => console.log(err));
} )
})
}
})

});

jwt 片段(在 longin 路由器上运行良好)是这样的:

        const payload = {
username: user.username
}

//sign token
jwt.sign(
payload,
keys.secretOrKey,
{ expiresIn: 3600},
(err, token)=> {
res.json({
success: true,
token: 'Bearer '+ token,
username: username
});
});

问题是我不知道如何将代码片段添加到响应 header 中。当我在 .then(user => 之后添加它时,我收到 SyntaxError: Unexpected token const 错误。

我怎样才能做到呢?

最佳答案

听起来您没有将 jwt 片段括在大括号内。如果没有它们,出现问题的箭头函数只需要一个表达式。将 jwt 代码段粘贴到以下代码段中。

bcrypt.genSalt(10, (err, salt)=> {
bcrypt.hash(newUser.password, salt, (err, hash)=> {
if (err) throw err;
newUser.password = hash;
newUser.save()
.then(user => {
res.status(200).json(user);
<JWT_Snippet_here>
}
.catch(err => console.log(err));
})
})

Here您可以看到箭头函数的语法是如何定义的。以下引用显示了最重要的部分。

(param1, param2, …, paramN) => { statements }

(param1, param2, …, paramN) => expression

需要花括号才能使用语句列表。您遇到的错误的发生是因为您的 JavaScript 引擎需要单个表达式,但却找到了语句列表。

关于javascript - 无法将 jwt token 添加到 node.js 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52254869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com