1. ホーム
  2. node.js

[解決済み] Json Web Token verify() return jwt malformed

2022-02-01 03:24:20

質問

const jwt = require("jsonwebtoken");
const SECRET = "superSuperSecret";

module.exports = function(req, res, next) {
    const token = req.body.token || req.query.token || req.headers[ "x-access-token" ];
    if (token) {
        return jwt.verify(token, SECRET, function(err, decoded) {
            if (err) {
                return res.json({
                    success: false,
                    message: "Failed to authenticate token.",
                });
            }
            req.user = decoded;
            return next();
        });
    }
    return res.unauthorized();
};

私はPostmanを使ってAPIのテストをしています。ヘッダを x-access-token キーと、値 superSuperSecret . 私は、エラーが発生しました {"name":"JsonWebTokenError","message":"jwt malformed","level":"error"} . 私はこれを使用しています https://github.com/FortechRomania/express-mongo-example-project/blob/master/src/middlewares/validateToken.js

解決方法は?

トークンには、任意の値を渡すことはできません。必要なのは jwt.sign() を使用してトークンを作成します。のドキュメントを見てください。 JWT をご覧ください。

また

リクエストヘッダ名には Authorization ではなく x-access-token . トークンの前にベアラを配置する。

Authorization: Bearer TOKEN_STRING

JWTの各部分はbase64urlでエンコードされた値です。としてトークンを取得することができます。

var token = req.headers.authorization.split(' ')[1];