我正在创建一个JWT标记,出现了这个错误。我收到了这个错误:TypeError:无法读取undefined的属性(阅读'jwt')以下是代码:
const maxAge = 3*24*60*60;
db.query('SELECT * FROM USERS WHERE EMAIL=?', [email], async (err, results, fields)=>{
if(err){
console.log(err);
}
else if(results.length > 0)
{
const comparison = await bcrypt.compare(password, results[0].password);
if(comparison){
const token = jwt.sign({user_id:results[0].user_id, name:results[0].name},
process.env.SECRET_KEY , { expiresIn:maxAge });
res.cookie('jwt', token, { httpOnly:true, maxAge:maxAge*1000 });
console.log(token);
return res.render('user', {
message: results[0].name
});
}
else{
res.render('login', {
message: 'Incorrect Email and Password.'
});
}
}
else{
res.render('login', {
message: "Email doesn't Exists."
});
}
})
这里是中间件功能的代码
const requireAuth = (req, res, next)=>{
const token = res.cookies.jwt; // Here this error came up
if(token){
jwt.verify(token, process.env.SECRET_KEY, (err, decoded)=>{
if(err){
console.log(' You are not logged in.');
res.redirect("/");
}
else{
console.log(decoded);
next();
}
});
}
else{
res.redirect('/');
}
}
2条答案
按热度按时间dohp0rv51#
你的代码是错误的:
您应该从请求中读取Cookie。
我不知道语法,这取决于这里服务器使用的依赖关系。你能告诉我们服务器依赖关系吗?
thtygnil2#
在纠正中间件代码之后
密码起作用了吗?