2017-09-15 18 views
1

私はauth0を使用しています。Auth0電子メール確認、登録の扱い方gracefuly

私のアプリでは、ユーザーがメールを確認する必要があります。

ユーザーレジスタは、彼がこのアラートを受信した場合:

Error: unauthorized. Check the console for further details. 

ユーザーはまだ彼の電子メールを確認していないためです。

自分の選択したビューにユーザーをリダイレクトするには、このイベント/アラートを「キャッチ」するにはどうすればよいですか?

ありがとうございました

答えて

0

これにはいくつかの異なる部分があります。

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); 
    } 
} 

メールが確認されていない場合は効果的ルールパイプラインで例外が発生しますそれはあなたが2つのクエリのparamsとして提供callbackUrl上のアプリケーションにエラーが返されます - errorerror_description。これはあなた次第です - ここにはsample Node.js applicationがあります。これはどのように動作するかを具体的に説明するために書かれています - サンプルでは、​​私はエラーとerror_descriptionを確認するためにいくつかの高速ミドルウェアを使用しています。検出された。

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アプリケーション)からのみ行う必要があります。

これが役に立ちます。不明な点があればコメントを残してください。

+0

ありがとうございました。私は今これを試しています! – mayk93

関連する問題