JWTを使用してバックエンドAPIの要求を認証していますが、予期しないエラーが発生します。ノード認可で認可トークンが見つかりません
const generateJwt = function(rows) {
var expiry = new Date();
expiry.setDate(expiry.getDate() + 7);
return jwt.sign({
_id: 1,
email: rows.email,
name: rows.username,
exp: parseInt(expiry.getTime()/1000),
}, "MY_SECRET"); // DO NOT KEEP YOUR SECRET IN THE CODE!
};
私は上記のコードを使用してjwtを生成しており、正常に生成されています。
var jwt = require('express-jwt');
var auth = jwt({
secret: 'MY_SECRET',
userProperty: 'payload'
});
var router = express.Router();
router.get('/list',auth, controller.getMerchantList);
ユーザーがログインした後、私はjwtトークンを返し、クライアントがバックエンドを呼び出したときにトークンを送信します。
$http.get('/api/merchant/list',{
headers: {
Authorization: 'Bearer '+ authentication.getToken()
}
});
生成されたトークン:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOjEsImVtYWlsIjoia2FzaGlmcm9zaGVuN0BnbWFpbC5jb20iLCJuYW1lIjoiQXJ5YSBTdGFyayIsImV4cCI6MTQ5OTg0NjEzOSwiaWF0IjoxNDk5MjQxMzM5fQ.-CCQwiadozSOuuIk9fil4aJh8D38NwgKYP3HpvClyKw
しかし、私はまだ401 JWTトークンを取得するには、フロントエンドでもあります。私はconsole.logで確認しました。誰かが私がこれを解決するのを助けてくれますか?
です。 – jps
私はトークンを追加しました:)前もって感謝しています:) –
私はexpress-jwtに慣れていませんが、最近はあなたのような同様のケース(トークンは存在しますが、依然として401)、これはaud(オーディエンス)の主張に問題があることが判明しました。 ( - > https://stackoverflow.com/questions/44398177/message-authorization-has-been-denied-for-this-request-owin-middleware/44409993#44409993)あなたのトークンには、クレームがありません。多分それが問題です。 https://tools.ietf.org/html/rfc7519#section-4.1.3 – jps