如何将 JWT 令牌发送到 Cookie 并在其他路由中使用?
Posted
技术标签:
【中文标题】如何将 JWT 令牌发送到 Cookie 并在其他路由中使用?【英文标题】:How to send JWT token to Cookie and use in another routes? 【发布时间】: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,以便我可以在所有路由上使用它来进行用户身份验证。
【问题讨论】:
【参考方案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。
【讨论】:
以上是关于如何将 JWT 令牌发送到 Cookie 并在其他路由中使用?的主要内容,如果未能解决你的问题,请参考以下文章
如果用于认证的JWT令牌保存在HTTP-Only cookie中,你如何从cookie中读取它,以便我可以在请求头中包含它?
为啥不将 JWT 访问令牌存储在内存中并在 cookie 中刷新令牌?
检查 cookie 中 JWT 令牌的有效性时如何避免不必要的 API 调用
如何使用.Net Core cookie中间件ticketdataformat将Jwt令牌从Api保存到c#中的cookie