jwt 令牌的有效负载中缺少声明

时间:2021-07-14 21:09:35

标签: express jwt

作为登录端点的一部分,我使用“generateToken”函数返回生成的令牌。有效负载包含一个声明对象(user.id 和 user.role)。但是,当我登录并检查返回的令牌时,我没有看到任何声明;只是 'created' 和 'expires' 值。

登录端点

async function findUserById(req, res){
    let { email, password } = req.body;
    
    try {
        const user = await db.query("SELECT * FROM user_account WHERE email = $1", [email]);

        if(!user.rows.length){
            return res.status(401).json("Invalid crendential")
        }
        
        const validPassword = await bcrypt.compareSync(password, user.rows[0].password)
        
        if(!validPassword){
            return res.status(401).json("Invalid credential");
        }
        const token = await generateToken(user);
        res.status(200).json({ user, email: user.email, token})
    } catch (error) {
        res.status(500).json({error: error.message})
    }
}

生成令牌函数

const jwt = require("jsonwebtoken");
const secret = require("../config/secrets");

function generateToken(user){
    const payload = {
        subject: user.id,
        role: user.role
    };
    const options = {
        expiresIn: "30d"
    };
    return jwt.sign(payload, secret.jwtSecret, options)
}

module.exports = {generateToken};

0 个答案:

没有答案