如何将 JWT 令牌发送到 Cookie 并在其他路由中使用?

How to send JWT token to Cookie and use in another routes?

这是我的登录控制器(JWT)

const token = jwt.sign({ _id: user._id }, secret);
res.header('auth-token', token).redirect('/home');

这是我的 JWT 令牌中间件

module.exports = (req, res, next)=>{
    const token = req.header('auth-token');
    if(!token){
        return res.send('Denied');
    }
    try {
        const verified = jwt.verify(token, secret);
        req.user = verified;
        next();
    } catch (error) {
        console.log('JWT Error', error)
    }
}

这是我的路线代码

const verify = require('../middlewares/tokenMiddleware');
router.get('/home', verify, (req, res, next)=>{
  res.render('home');
});

令牌正在分配,可以在登录路由上看到。但我想将它发送到 cookie,以便我可以在所有路由上使用它进行用户身份验证。

您必须安装 cookie 解析器包才能设置和读取请求中的 cookie。 参考:Express (Cookie Parser) 安装包后,您可以在节点应用程序中简单地使用它。
设置 cookies :-

const cookieParser = require('cookie-parser');

app.use(cookieParser());
res.cookie('auth-token', token, [options]);    // You can look up the options at the API reference

读取 cookies :-

const token = req.cookies['auth-token'];

作为替代方案,要在不使用 cookie 解析器包的情况下设置 cookie,您必须使用 'Set-Cookie : header 以便使用 HTTP header.