Я использую 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) после успешного входа в систему?





Укажите 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.