NextAuth.js Создание пользовательского потока аутентификацииJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 NextAuth.js Создание пользовательского потока аутентификации

Сообщение Anonymous »

Я потратил два дня, пытаясь реализовать простой процесс аутентификации с помощью NextAuth.js. Вот чего я пытаюсь достичь:
Пользователь входит в систему с помощью электронной почты/пароля ИЛИ социальных сетей (Google/Facebook)
Если вход через социальную сеть - > прямая аутентификация
Если адрес электронной почты/пароль -> проверьте, подтвержден ли адрес электронной почты
Если подтвержден -> аутентифицируйте
Если не подтвержден -> отправьте OTP и перенаправьте на страницу подтверждения
Вот основные препятствия, с которыми я столкнулся:
NextAuth не поддерживает поток проверки OTP «из коробки». Пришлось взломать кодами статуса:

Код: Выделить всё

Credentials({
async authorize(credentials) {
const res = await fetch("/api/login", {
method: "POST",
body: JSON.stringify(credentials)
});
const data = await res.json();

// Hacky way to handle unverified emails
if (res.status === 403) {
return {
status: "not-verified",
user: data.user,
error: "Please verify email"
};
}
}
})
Сеансы сервера и клиента полностью не синхронизированы. После проверки OTP я не могу корректно обновить сеанс:

Код: Выделить всё

// verify-otp page
const { update } = useSession();

const handleVerify = async () => {
const res = await verifyOtp();
if (res.ok) {
// Updates client but server session remains unchanged!
await update({ status: "authorized" });
}
};
По какой-то причине мой терминал рассылают спам с запросами сеанса:
Изображение

Я тут в тупике. Может ли кто-нибудь помочь мне добиться этого с помощью NextAuth или мне следует просто отказаться от всего и создать аутентификацию с нуля? Буду очень признателен за любую помощь или указания!
Вот мой текущий код, если это поможет:
github gist
И извините за мою ошибку английский.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ation-flow
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Javascript»