Я использую auth0.
Мое приложение требует от пользователей подтверждения их электронной почты.
Когда пользователь регистрируется, он получает это предупреждение:
Error: unauthorized. Check the console for further details.
Это связано с тем, что пользователь еще не подтвердил свою электронную почту.
Как я могу "поймать" это событие/предупреждение, чтобы перенаправить пользователя на мой выбор?
Спасибо за помощь
Для этого есть пара различных частей.
1). вы включили правило проверки электронной почты? (это шаблон, доступный с панели инструментов Auth0 -
function forceEmailVerification(user, context, callback) {
console.log("force-email-verification");
if(context.connection !== "MyDB") {
return callback(null, user, context);
}
if (!user.email_verified) {
return callback(new UnauthorizedError('Please verify your email before logging in.'));
} else {
return callback(null, user, context);
}
}
Это эффективно вызывает исключение в конвейере правил, если адрес электронной почты не проверен. Он вернет ошибку вашему приложению в callbackUrl, который вы предоставите в виде двух параметров запроса: error
и error_description
. Это зависит от вас, как вы справляетесь с этим. Вот пример приложения Node.js, который я написал специально, чтобы проиллюстрировать, как это работает. В образце я использую какое-то явное промежуточное программное обеспечение для проверки ошибок и error_description и пересылки на пользовательский контроллер/просмотр, если обнаружено.
2). Только в случае необходимости вы также можете явно вызвать электронную почту для проверки электронной почты. Это запрос POST для https://{{tenant}}.auth0.com/api/users/{{user_id}}/send_verification_email
конечной точки, передающий заголовок устройства авторизации с маркером Auth0 APIv1 (и пустым телом). Токен можно получить, выполнив запрос POST для https://{{tenant}}.auth0.com/oauth/token
endpoint, передающий тело формы:
{
"client_id": "{GLOBAL CLIENT ID}",
"client_secret": "{GLOBAL CLIENT SECRET}",
"grant_type": "client_credentials"
}
Вы можете получить глобальный идентификатор клиента и секрет клиента в настройках учетной записи → расширенный с панели инструментов Auth0. Пожалуйста, не храните никаких секретов в приложениях SPA и т.д. - использование этой конечной точки должно выполняться только из клиентских конфиденциальных/доверенных приложений (например, традиционный MVC webapp, которым вы владеете).
Надеюсь это поможет. Пожалуйста, оставляйте комментарии, если что-то неясно.