如何将 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.
这是我的登录控制器(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.