Auth0电子邮件确认,如何正确处理注册

时间:2017-09-15 13:57:14

标签: javascript authentication oauth jwt auth0

我正在使用auth0。

我的应用要求用户确认他们的电子邮件。

当用户注册时,他会收到此提醒:

Error: unauthorized. Check the console for further details.

这是因为用户尚未验证他的电子邮件。

如何“抓住”此事件/提醒,以便将用户重定向到我选择的视图?

感谢您的帮助

1 个答案:

答案 0 :(得分: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上的错误返回给您的应用程序作为两个查询参数 - errorerror_description。然后由你决定如何处理这个 - 这是我专门写的sample Node.js application来说明它是如何工作的 - 在示例中,我使用一些快速中间件来检查错误和error_description并转发到{ {3}}如果检测到。

2)。只有在需要时,您还可以明确触发电子邮件验证电子邮件。它是对https://{{tenant}}.auth0.com/api/users/{{user_id}}/send_verification_email 端点的POST请求,传递具有Auth0 APIv1令牌(和空体)的授权承载头。可以通过向https://{{tenant}}.auth0.com/oauth/token端点传递表单主体的POST请求来获取令牌:

{
  "client_id": "{GLOBAL CLIENT ID}",
  "client_secret": "{GLOBAL CLIENT SECRET}",
  "grant_type": "client_credentials"
}

您可以在帐户设置下获取全球客户端ID和客户端密码 - >从Auth0仪表板升级。请不要在SPA应用程序等上存储任何机密 - 使用此终端只能通过客户机密/可信应用程序(例如您拥有的传统MVC Web应用程序)完成。

希望这会有所帮助。如果有任何不清楚的地方,请留下评论。