我的nodejs中有一个signin方法,用于在成功登录后使用电子邮件和密码等用户信息响应前端(reactjs)。现在我也实现了JWT。因此,在登录后,节点还会向客户端发送令牌。但我不知道该怎么做。我怎样才能同时发送两个回复?它只发送用户信息。
节点:
server.js
app.post('/signin', (req, res) => { signin.handleSignin(req, res, db, bcrypt, jwt)});
signin.js
const handleSignin = (req, res, db, bcrypt, jwt) => {
const {
email,
password
} = req.body;
if (!email || !password) {
return res.status(400).json('Incorrect form submission');
}
db.select('email', 'hash').from('login')
.where('email', '=', email)
.then(data => {
const isValid = bcrypt.compareSync(password, data[0].hash);
if (isValid) {
return db.select('*').from('users')
.where('email', '=', email)
.then(user => {
jwt.sign({
user
}, 'secretkey', {
expiresIn: '1000s'
}, (err, token) => {
res.json(user[0]);
res.send({
token
})
})
})
.catch(err => res.status(400).json('unable to get user'))
} else {
res.status(400).json('wrong credentials')
}
})
.catch(err => res.status(400).json('wrong credentials'))
}
module.exports = {
handleSignin: handleSignin
}
答案 0 :(得分:0)
而不是res.json(user [0]);和res.send({token});你可以这样做res.json({user:user [0],token:token});
答案 1 :(得分:0)
您发送的回复次数如下
$output = $crawler->filterXpath('//a[@class="pdt_title"]/text()')->extract(array('_text'));
您将不会得到 res.json(user[0]);
res.send({
token
})
的第二个回复,因为该程序将发送第一个响应并将考虑其完成的工作。
您可以通过制作一系列回复一次发送多个回复。在客户端,只需迭代响应即可获得所需的密钥参数。
token