Как перенаправить обратно на защищенную страницу после успешного входа в Nextauth?

Я использую NextAuth для аутентификации

const options = {
  providers: [
    EmailProvider({...}),
  ],
  pages: {
    signIn: SIGN_IN_URL,
    verifyRequest: AUTH_URL,
  },
  callbacks: {
    async session(session) {
      return { ...session }
    },
    async signIn({ user }) {
      const result = ...
      if (result) {
        return true
      } else {
        return false
      }
    },
  },
}

У меня есть защищенная страница /dashboard

export const getServerSideProps = async (context) => {
  const session = await getSession(context)

  if (!session) {
    return {
      redirect: {
        permanent: false,
        destination: SIGN_IN_URL,
      },
    }
  }

  return {
    props: {},
  }
}

Если неавторизованный пользователь попытается получить доступ к странице, он будет перенаправлен на страницу входа http://localhost:3000/auth/signin После успешного входа он перенаправляется обратно на /.

Но как мне настроить NextAuth для перенаправления обратно на исходную страницу (в данном случае /dashboard) после успешного входа в систему?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
117
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Укажите callbackUrl в строке запроса. Это должен быть закодированный URL-адрес, например %2Fdashboard, например, в вашем фрагменте кода:

export const getServerSideProps = async (context) => {
  const session = await getSession(context)

  if (!session) {
    return {
      redirect: {
        permanent: false,
        destination: "/api/auth/signin?callbackUrl=%2Fdashboard",
      },
    }
  }

  return {
    props: {},
  }
}

При переходе на /api/auth/signin будет использоваться настраиваемая страница входа, которую вы указали в конфигурации nextauth. Чтобы увидеть, как это работает в продакшене, посмотрите официальный пример nextauth.

Другие вопросы по теме