我正在使用auth0。
我的应用要求用户确认他们的电子邮件。
当用户注册时,他会收到此提醒:
Error: unauthorized. Check the console for further details.
这是因为用户尚未验证他的电子邮件。
如何“抓住”此事件/提醒,以便将用户重定向到我选择的视图?
感谢您的帮助
答案 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上的错误返回给您的应用程序作为两个查询参数 - error
和error_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应用程序)完成。
希望这会有所帮助。如果有任何不清楚的地方,请留下评论。