検証が成功すると、NextJS はログイン ページからダッシュボード ページにリダイレクトします
P粉021854777
2023-08-13 10:56:17
<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>
認証に Next-Auth を使用していると仮定します:
withAuth
これは役に立つかもしれない TS コードです:を使用してミドルウェアをラップし、Next-Auth によって提供されるトークン変数を使用してセッションを認証し、セッションの有効性に基づいて目的の
routeにリダイレクトします。
リーリー