如何在后端使用节点js在客户端存储令牌?

时间:2019-09-09 07:45:00

标签: node.js mongodb express jwt passport.js

我正在使用Passport.js进行本地身份验证,并使用express-session来管理用户会话,但是express-session在客户端存储cookie。由于cookie的安全性较差,因此我想在客户端发送和接收jwt令牌,但我不知道该怎么做。 我在数据库中使用mongodb,express framework和node js

2 个答案:

答案 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) });