【问题标题】:How to send JWT token to Cookie and use in another routes?如何将 JWT 令牌发送到 Cookie 并在其他路由中使用?
【发布时间】:2020-10-01 21:37:54
【问题描述】:

这是我的登录控制器 (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,以便我可以在所有路由上使用它来进行用户身份验证。

【问题讨论】:

    标签: node.js authentication cookies jwt express-jwt


    【解决方案1】:

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

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

    读取 cookie:-

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

    作为替代方案,要在不使用 cookie 解析器包的情况下设置 cookie,您必须使用 'Set-Cookie : 标头才能使用 HTTP 标头设置 cookie。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-18
      • 2020-08-21
      • 2017-01-02
      • 2015-03-30
      • 2020-06-08
      • 2020-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多