2017-09-15 3 views
1

auth0을 사용하고 있습니다.Auth0 전자 메일 확인, gracefuly 등록 처리 방법

내 응용 프로그램은 자신의 이메일을 확인하기 위해 사용자가 필요합니다.

사용자 등록, 그는이 경고를 받으면 :

Error: unauthorized. Check the console for further details. 

사용자가 아직 이메일을 확인하지 않은 때문이다.

어떻게 "캐치"내 선택의보기로 사용자를 리디렉션하기 위해이 이벤트/경고합니까?

도움 주셔서 감사합니다.

답변

0

두 가지 다른 부분이 있습니다.

1). 전자 메일 검증 규칙을 활성화 했습니까? . 효율적으로 전자 메일이 확인되지 않을 경우 그것은 당신이 두 개의 검색어 매개 변수로 제공하는 callbackUrl에서 응용 프로그램에 오류가 반환됩니다 규칙 파이프 라인에서 예외가 발생

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

- - (이 Auth0 대시 보드에서 사용할 수있는 템플릿입니다 error . 여기에 내가이 어떻게 작동하는지 설명하기 위해 특별히 쓴 sample Node.js application입니다 - - 그리고 error_description 그것은 당신이 처리 방법까지 다음이다 Custom controller/view 경우에 샘플에서, 나는 오류 및 ERROR_DESCRIPTION 확인하고 전달하는 몇 가지 표현 미들웨어를 사용하고 있습니다 감지 됨.

2). 필요한 경우에만 이메일 확인 이메일을 명시 적으로 실행할 수 있습니다. Auth0 APIv1 토큰 (및 빈 본문)과 함께 인증 Bearer 헤더를 전달하여 https://{{tenant}}.auth0.com/api/users/{{user_id}}/send_verification_email 끝점에 대한 POST 요청입니다. 토큰 형태의 몸을 통과 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 웹 응용 프로그램)에서만 수행해야합니다.

희망이 도움이됩니다. 불분명 한 점이 있으면 의견을 남겨주세요.

+0

답변 해 주셔서 감사합니다. 나는 이것을 지금 시험해보고있다! – mayk93