Node.js 将JWT另存为cookie
所以基本上我想在cookie中存储一个JWT令牌,以便以后可以访问它来验证API调用。我不知道该怎么做Node.js 将JWT另存为cookie,node.js,reactjs,cookies,jwt,Node.js,Reactjs,Cookies,Jwt,所以基本上我想在cookie中存储一个JWT令牌,以便以后可以访问它来验证API调用。我不知道该怎么做 passport.use(new LocalStrategy( function(email, password, done) { User.getUserByEmail(email, function(err, user){ if(err) throw err; if(!user){ return done(
passport.use(new LocalStrategy(
function(email, password, done) {
User.getUserByEmail(email, function(err, user){
if(err) throw err;
if(!user){
return done(null, false, {message: 'Unknown User'});
}
User.comparePassword(password, user.password, function(err, isMatch){
if(err) throw err;
if(isMatch){
const token = jwt.sign(user, config.secret, {
expiresIn: 604800 // 1 week
});
//STORE TOKEN AS A COOKIE
return done(null, user);
} else {
return done(null, false, {message: 'Invalid password'});
}
});
});
}
));
router.post('/login',
passport.authenticate('local', {successRedirect:'/', failureRedirect:'/users/login',failureFlash: true}),
function(req, res) {
res.redirect('/');
});
提前感谢,Ed.阅读文档后,这里似乎不是设置jwt Cookie的最佳位置。为此,您需要访问响应对象。也许您可以在POST路由中的身份验证中间件之后使用另一个中间件函数设置cookie
router.post('/login',
passport.authenticate('local', {successRedirect:'/', failureRedirect:'/users/login',failureFlash: true}),
setJWTFn, //insert middlelware here
function(req, res) {
res.redirect('/');
});
其中,setJTWFn
看起来像:
function setJWTFn(req, res, next) {
//create JWT
const jwt = createJWT();
res.cookie('jwt', jwt);
next();
}
在阅读了文档之后,这里似乎不是设置JWTCookie的最佳位置。为此,您需要访问响应对象。也许您可以在POST路由中的身份验证中间件之后使用另一个中间件函数设置cookie
router.post('/login',
passport.authenticate('local', {successRedirect:'/', failureRedirect:'/users/login',failureFlash: true}),
setJWTFn, //insert middlelware here
function(req, res) {
res.redirect('/');
});
其中,setJTWFn
看起来像:
function setJWTFn(req, res, next) {
//create JWT
const jwt = createJWT();
res.cookie('jwt', jwt);
next();
}
您使用的是快速节点还是普通节点?您使用的是快速节点还是普通节点?它似乎在工作,多年来一直在努力解决这个问题。非常感谢你,你是最棒的!它似乎在起作用,多年来一直在努力解决这个问题。非常感谢你,你是最棒的!