NodeJS JWT类型错误:无法读取未定义的属性(正在阅读“jwt”)

slmsl1lt  于 2022-12-18  发布在  Node.js
关注(0)|答案(2)|浏览(246)

我正在创建一个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('/');
    }
}
dohp0rv5

dohp0rv51#

你的代码是错误的:

const token = res.cookies.jwt;

您应该从请求中读取Cookie。
我不知道语法,这取决于这里服务器使用的依赖关系。你能告诉我们服务器依赖关系吗?

thtygnil

thtygnil2#

在纠正中间件代码之后

const token = res.cookies.jwt
            to 
const token = req.cookies.jwt

密码起作用了吗?

相关问题