【问题标题】:JWT token is invaildJWT 令牌无效
【发布时间】:2021-04-13 07:24:03
【问题描述】:

我使用 JWT 进行身份验证。 身份验证将是一个中间件:

const jwt = require('jsonwebtoken');
require('dotenv').config();

module.exports = (req, res, next) => {
    const token = req.header("auth-token");
    if (!token) return res.status(401).send("Missing token. Access denied");

    try {
        const decoded = jwt.verify(token, process.env.jwtKey);
        req.user = decoded;
        next();
    } catch (err) {
        console.log(err);
        res.status(400).send('Invalid token.');
    }
};

现在,当我获得一个令牌并在标头“auth-token”中使用它并使用 auth 中间件发出 get 或 post 请求时,它总是给我“JsonWebTokenError: invalid signature

我是这样使用中间件的:

router.get('/:id', auth, async (req, res) => {
    const user = await User.findOne({
        _id: req.params.id,
    });
    if (!user) return res.status(404).send('User not found');
    res.send(user);
})

这里是生成令牌的地方

router.post('/', async (req, res) => {

    //check for validation errors
    const { error } = validate(req.body);
    if (error) return res.status(400).send(error.details[0].message);

    let user = await User.findOne({ email: req.body.email });
    if (!user) return res.status(404).send("Invalid email or password");

    const validPassword = await bcrypt.compare(req.body.password, user.password);
    if (!validPassword) return res.status(400).send("Invalid email or password");

    res.json({ token: user.generateAuthToken(), status: "User is logged in" })
});


const validate = (req) => {
    const schema = Joi.object({
        email: Joi.string().min(6).max(255).email().required(),
        password: Joi.string().min(6).max(255).required(),
    });
    return schema.validate(req);
};


module.exports = router;

当我发出请求 GET 时,您可以看到使用了 auth 中间件 在 JWT.io 调试器中,当我放置令牌时,它说没问题……那么磨损了什么?

【问题讨论】:

  • 请确保在签名和解码时使用相同的密钥。
  • 这通常意味着您没有发送正确的令牌。分享生成令牌的代码
  • 我用代码更新了问题

标签: node.js jwt


【解决方案1】:

所以我解决了这个问题,我解码的密钥和验证的密钥有误。

【讨论】:

    猜你喜欢
    • 2021-09-25
    • 2019-03-19
    • 2018-07-14
    • 2020-04-19
    • 2016-10-20
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多