0

Express-jwt と jsonwebtokens をテストしています。私はこれまでにこれを使用したことがなく、助けが必要です!

基本的なセットアップは完了しており、保護されたルートは 1 つしかありません。

app.use('/api', expressJWT({secret: 'cat'}));

残念ながら、このエラーが発生するため、「/api」にアクセスできません

UnauthorizedError: No authorization token was found

POSTman を使用して、次のヘッダーで GET リクエストを発行すると、

Authorization -> Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6ImJhc2hpciIsImlhdCI6MTQ1MTQ0MjM4NywiZXhwIjoxNDUxNDQyNjg3fQ.CnaLvS_oCEy_mp_9MSAmTTylJqQMI2Qlq9V3emAmN3E

すべて正常に動作し、'/api' のコンテンツにアクセスできます。

しかし、私の問題は、特にユーザーを新しい保護されたルートにリダイレクトしようとするときの高速アプリケーションにあります。

ユーザーがログインし、新しい jwt トークンを作成して、ユーザーを「/api」にリダイレクトします

router.post('/login', passport.authenticate('local'), function (req, res) {
    myToken = jwt.sign({
      username: req.body.username
    }, 'cat', {expiresIn: 60*5});
    res.redirect('/api');
});

このルートでは、ヘッダーを設定してページをレンダリングします。

router.get('/api',  function (req, res) {
  res.render('index', {user: req.user});
});

残念ながら、次のエラーが表示されます

UnauthorizedError: No authorization token was found

私の目標は、ユーザーを保護されたルートにリダイレクトできるようにすることです。

私の理解では、 /api は保護されたルートであるため、express-jwt は認証ヘッダーを設定する必要があります。ミドルウェアを使用してヘッダーを手動で設定しようとしても、エラーが発生します。

どんな助けでも大歓迎です!

ありがとう!

4

1 に答える 1