这是我的登录控制器(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,以便可以在所有用于用户身份验证的路由上使用它。
答案 0 :(得分: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。