ホームページ  >  に質問  >  本文

検証が成功すると、NextJS はログイン ページからダッシュボード ページにリダイレクトします

<p>この例では、誰かが認証されていない場合に、nextjs をログイン ページなどの指定したページにリダイレクトさせることができます。ただし、ユーザーが認証されており、そのページがログイン ページのような場合に、ユーザーをダッシュ​​ボードまたは別のページにリダイレクトするには、これをどのように変更すればよいでしょうか?これを実現できる構成はありますか? <code>matcher</code> のようなものは、プライベート URL を適切に維持します。しかし、ログイン中にユーザーにアクセスさせたくない特定のパブリック URL について、この問題を修正するにはどうすればよいでしょうか?これは可能でしょうか? </p> <pre class="brush:php;toolbar:false;">import { NextRequest, NextResponse } from 'next/server' 非同期関数ミドルウェアのエクスポート(req: NextRequest、res: NextResponse) { const token = req.headers.get('token') // TODO: リクエストヘッダーからトークンを取得します const userIsAuthenticated = false // TODO: ユーザーが認証されているかどうかを確認します console.log('ミドルウェア.ts', 'トークン', トークン); if (!userIsAuthenticated) { constsigninUrl = 新しい URL('/login', req.url) NextResponse.redirect(signinUrl) を返す } NextResponse.next() を返す } // ここで、このミドルウェア関数が実行されるすべてのパスを指定できます // 単一の文字列値またはマッチャーの配列をサポートします エクスポート const 構成 = { マッチャー: ['/api/auth/:path*', '/'], }</pre>
P粉021854777P粉021854777403日前605

全員に返信(1)返信します

  • P粉986937457

    P粉9869374572023-08-14 09:29:48

    認証に Next-Auth を使用していると仮定します:

    withAuth を使用してミドルウェアをラップし、Next-Auth によって提供されるトークン変数を使用してセッションを認証し、セッションの有効性に基づいて目的の route にリダイレクトします。

    これは役に立つかもしれない TS コードです:

    リーリー

    返事
    0
  • キャンセル返事