Auth0 подтверждение по электронной почте, как обработать регистрацию изящно

1

Я использую auth0.

Мое приложение требует от пользователей подтверждения их электронной почты.

Когда пользователь регистрируется, он получает это предупреждение:

Error: unauthorized. Check the console for further details.

Это связано с тем, что пользователь еще не подтвердил свою электронную почту.

Как я могу "поймать" это событие/предупреждение, чтобы перенаправить пользователя на мой выбор?

Спасибо за помощь

Теги:
authentication
jwt
oauth
auth0

1 ответ

1

Для этого есть пара различных частей.

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, которым вы владеете).

Надеюсь это поможет. Пожалуйста, оставляйте комментарии, если что-то неясно.

  • 0
    Спасибо за ответ. Я пытаюсь это сейчас!
  • 0
    @arcseldon вы знаете, как получить user_id в этом случае. Мне нужно, чтобы вызвать повторную отправку подтверждения по электронной почте
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню