찾다

 >  Q&A  >  본문

확인에 성공하면 NextJS는 로그인 페이지에서 대시보드 페이지로 리디렉션됩니다.

<p>이 예를 사용하면 누군가 인증되지 않은 경우 nextjs가 로그인 페이지와 같은 지정된 페이지로 리디렉션되도록 할 수 있습니다. 하지만 사용자가 인증되었고 페이지가 로그인 페이지와 같은 경우 대시보드나 다른 페이지로 리디렉션되도록 이를 어떻게 수정할 수 있습니까? 이를 달성할 수 있는 구성이 있습니까? <code>matcher</code>와 같은 기능은 비공개 URL을 훌륭하게 유지합니다. 하지만 사용자가 로그인한 동안 액세스하는 것을 원하지 않는 특정 공개 URL에 대해 이 문제를 어떻게 해결합니까? 이것이 가능한가? </p> <pre class="brush:php;toolbar:false;">'next/server'에서 { NextRequest, NextResponse } 가져오기 비동기 함수 미들웨어 내보내기(req: NextRequest, res: NextResponse) { const token = req.headers.get('token') // TODO: 요청 헤더에서 토큰을 가져옵니다. const userIsAuthenticated = false // TODO: 사용자가 인증되었는지 확인하세요. console.log('middleware.ts', 'token', token); if (!userIsAuthenticated) { const signinUrl = 새 URL('/login', req.url) NextResponse.redirect(signinUrl) 반환 } NextResponse.next()를 반환합니다. } // 여기서 이 미들웨어 기능이 실행되어야 하는 모든 경로를 지정할 수 있습니다. // 단일 문자열 값 또는 일치자 배열을 지원합니다. const 구성 내보내기 = { 일치자: ['/api/auth/:path*', '/'], }</pre>
P粉021854777P粉021854777500일 전700

모든 응답(1)나는 대답할 것이다

  • P粉986937457

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

    Next-Auth를 사용하여 인증한다고 가정합니다.

    사용withAuth包装中间件,并使用Next-Auth提供的token变量验证会话,然后根据会话的有效性重定向到您希望的route.

    도움이 될 수 있는 TS 코드는 다음과 같습니다.

    으아악

    회신하다
    0
  • 취소회신하다