我正在使用Passport.js进行本地身份验证,并使用express-session来管理用户会话,但是express-session在客户端存储cookie。由于cookie的安全性较差,因此我想在客户端发送和接收jwt令牌,但我不知道该怎么做。 我在数据库中使用mongodb,express framework和node js
答案 0 :(得分:0)
express-session有很多不同的存储解决方案,可以here找到。
例如,您可以使用MongoDB存储会话数据。
答案 1 :(得分:0)
您可以做到
在node.js中
verifyToken = (req, res, next) => {
let token = req.headers['x-access-token'];
if (!token) {
return res.status(403).send({
auth: false, message: 'No token provided.'
});
}
jwt.verify(token, config.secret, (err, decoded) => {
if (err) {
return res.status(500).send({
auth: false,
message: 'Fail to Authentication. Error -> ' + err
});
}
req.userId = decoded.id;
next();
});
}
然后将其添加到您的路由器
var token = jwt.sign({ id: user.id }, config.secret, {
expiresIn: 86400 // expires in 24 hours
});
res.status(200).send({ auth: true, accessToken: token });
客户端
const data = { username, password }
await axios.post(*usl, data, {
}).then((response) => {
localStorage.setItem('token', response.data.accessToken)
}, (error) => { console.log('error', error) });