web-dev-qa-db-ja.com

認証のためのnextjsルートミドルウェア

認証を行う適切な方法を見つけようとしていますが、これは GitHub issue page の扱いにくいテーマです。

私の認証は簡単です。セッションにJWTトークンを保存します。承認のために別のサーバーに送信します。 trueに戻った場合、続行します。falseに戻った場合、セッションをクリアし、メインページに送信します。

server.jsファイルには次のものがあります(注- nextjs learn の例を使用し、isAuthenticatedを追加するだけです):

function isAuthenticated(req, res, next) {
  //checks go here

  //if (req.user.authenticated)
   // return next();

  // IF A USER ISN'T LOGGED IN, THEN REDIRECT THEM SOMEWHERE
  res.redirect('/');
}

server.get('/p/:id', isAuthenticated, (req, res) => {
  const actualPage = '/post'
  const queryParams = { id: req.params.id }
  app.render(req, res, actualPage, queryParams)
})

これは設計どおりに機能します。ページを更新すると/p/123/にリダイレクトされます。ただし、next/link hrefを介してそこに行く場合は、そうではありません。これは、現時点ではエクスプレスを使用していないが、次のカスタムルーティングを使用しているためだと考えています。

ユーザーがログインしていることを確認できるように、エクスプレスを通過しないすべてのnext/linkをチェックインする方法はありますか?

9
bryan

次のチャットのティムはこれを解決するのに役立ちました。解決策は見つけることができます こちら しかし、私は彼を引用します。

例のスケルトンテンプレート も作成しました。ご覧になれます。

14
bryan