이메일/비밀번호 사용자 - Flutter SDK
이 페이지의 내용
Atlas App Services의 이메일/비밀번호 인증 제공자를 통해 클라이언트 코드에서 새 계정을 등록하고, 이메일 주소를 확인하고, 사용자 비밀번호를 재설정할 수 있습니다.
경고
버전 0.5.0 주요 변경 사항
Realm Flutter SDK 버전 0.5.0에는 이메일/비밀번호 인증에 대한 호환성이 손상되는 변경이 포함됩니다. 이번 변경은 이전 버전의 SDK에서 비밀번호 끝에 유니코드 null 문자 \u0000
가 추가되는 버그를 수정합니다.
따라서 0.5.0 이상의 버전을 사용하도록 애플리케이션을 업그레이드한 후에는 사용자는 비밀번호를 재설정하거나 새 계정을 만들어야 합니다. 0.5.0으로 업데이트한 후에는 이전 비밀번호가 더 이상 작동하지 않습니다.
시작하기 전에
클라이언트 코드 작성을 시작하기 전에 Atlas App Services에서 제공하는 다양한 이메일/비밀번호 인증 흐름을 이해하고 애플리케이션에 대한 백엔드 구현을 구성해야 합니다. Atlas App Services에는 이메일/비밀번호 사용자 ID를 확인하고 사용자 비밀번호를 재설정할 수 있는 다양한 방법이 있습니다. Atlas App Services 이메일/비밀번호 인증에 대해 자세히 알아보고, 활성화하고, 구성합니다.
사용자 등록
새 EmailPasswordAuthProvider
App
를 만듭니다. 인스턴스 를 인수로 사용하여 인스턴스 를 생성합니다.EmailPasswordAuthProvider.registerUser()를 호출합니다. 사용자의 이메일 과 비밀번호를 인수로 전달합니다.
EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app); await authProvider.registerUser("lisa@example.com", "myStr0ngPassw0rd");
참고
사용자를 등록해도 해당 사용자는 로그인되지 않습니다. 사용자는 별도로 로그인해야 합니다.
사용자 로그인
Credentials.emailPassword() 를 호출하여 이메일/비밀번호 자격 증명을 사용자의 이메일과 비밀번호로
생성된 자격 증명을
app.logIn
에 전달합니다.
final emailPwCredentials = Credentials.emailPassword("lisa@example.com", "myStr0ngPassw0rd"); await app.logIn(emailPwCredentials);
신규 사용자의 이메일 주소 확인
새 이메일/비밀번호 사용자를 등록한 후에는 사용자를 자동으로 확인하도록 Atlas App Services를 구성하지 않는 한 이메일 주소를 확인해야 합니다.
사용자 지정 확인 기능
이메일 주소 확인에 사용자 지정 함수 를 사용하도록 Atlas App Services를 구성하는 경우 사용자 지정 함수의 흐름에 따라 사용자 확인을 처리합니다. Atlas App Services 백엔드는 사용자가 등록할 때 사용자 지정 함수를 호출합니다.
확인 이메일 전송하기
이메일 을 통한 사용자 확인을 처리하도록 Atlas App Services를 구성한 경우에만 확인 이메일을 보내면 됩니다.
새로 생성된 사용자를 확인하려면 확인 token
및 을 tokenId
EmailPasswordAuthProvider.confirmUser(). 이는 사용자가 등록할 때 사용자의 이메일 주소로 전송된 이메일에 포함되어 있습니다.
EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app); await authProvider.confirmUser(token, tokenId);
사용자 확인 재시도
SDK는 사용자 확인 이메일을 재전송하거나 사용자 지정 확인을 재시도하는 방법을 제공합니다.
사용자 확인 함수 재시도
사용자 지정 사용자 확인 함수를 다시 시도하도록 Atlas App Services 백엔드를 구성한 경우 이 사용자 확인 방법을 사용하세요.
확인 함수를 다시 시도하려면 가입에 사용된 이메일을 EmailPasswordAuthProvider.retryCustomConfirmationFunction()에 전달합니다.
EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app); await authProvider.retryCustomConfirmationFunction("lisa@example.com");
사용자 확인 이메일 재전송
확인 이메일 을 다시 보내도록 Atlas App Services 백엔드를 구성한 경우 이 사용자 확인 방법을 사용하세요. 각 URL의 확인 토큰은 30 분 후에 만료됩니다. 사용자가 해당 기간 내에 링크를 따라 확인 및 확인을 하지 않을 경우, 새 확인 이메일을 요청해야 합니다.
확인 이메일을 다시 보내려면 가입에 사용된 이메일을 EmailPasswordAuthProvider.resendUserConfirmation()(으)로 전달하세요.
EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app); await authProvider.resendUserConfirmation("lisa@example.com");
사용자 비밀번호 재설정
사용자 비밀번호 재설정은 여러 단계를 거쳐야 합니다.
클라이언트 앱에서는 사용자가 비밀번호를 재설정할 수 있는 UI를 제공합니다. 그런 다음 App Services App은 이메일을 보내거나 사용자의 신원을 확인하는 사용자 지정 함수를 실행할 수 있습니다.
사용자 신원을 확인한 후 비밀번호 재설정 요청을 완료할 수 있습니다.
비밀번호 재설정이 완료된 후, 사용자는 새로운 비밀번호를 사용하여 로그인할 수 있습니다.
이러한 방법 중 앱에서 사용할 방법을 선택하려면 Atlas App Services 인증 비밀번호 재설정 동작을 구성합니다.
재설정 함수 호출
비밀번호 재설정 함수를 실행 하도록 앱을 구성할 때 EmailPasswordAuthProvider.callResetPasswordFunction() 을 호출할 때 실행되어야 하는 함수를 정의합니다. . 이 함수는 사용자 이름, 비밀번호 및 여러 개의 추가 인수를 사용할 수 있습니다. 이러한 인수를 사용하여 사용자가 비밀번호 재설정을 성공적으로 완료하기 위해 전달해야 하는 보안 질문 답변 또는 기타 과제와 같은 세부 정보를 지정할 수 있습니다.
비밀번호 재설정 흐름을 직접 정의하려는 경우 사용자 지정 비밀번호 재설정 함수를 사용하는 것이 더 나을 수 있습니다. 예를 들어 특정 도메인에서 사용자 지정 비밀번호 재설정 이메일을 보낼 수 있습니다. 또는 이메일 이외의 서비스를 사용하여 사용자의 신원을 확인할 수 있습니다.
App Services 측에서 이 메서드를 호출할 때 실행되는 사용자 지정 비밀번호 재설정 함수를 정의합니다. 이 함수는 세 가지 가능한 상태 중 하나를 반환할 수 있습니다.
fail
pending
success
SDK에서는 fail
상태를 오류로 처리합니다. SDK callResetPasswordFunction()
는 반환 값을 받지 않으므로 pending
또는 success
상태를 클라이언트에 반환하지 않습니다.
서버 측 보류 중인 사례
사용자가 신원을 확인하기 위해 몇 가지 추가 단계를 수행하도록 하려는 경우 Atlas App Services 비밀번호 재설정 함수 가 pending
을 반환할 수 있습니다. 그러나 해당 반환 값은 SDK의 callResetPasswordFunction()
로 전달되지 않으므로 클라이언트 앱은 pending
상태를 처리하는 자체 로직을 구현해야 합니다.
서버 측 함수가 사용자 지정 이메일 제공자를 사용하여 이메일을 보낼 수 있습니다. 또는 SMS를 사용하여 문자 메시지로 사용자의 신원을 확인할 수 있습니다.
Atlas App Services 비밀번호 재설정 함수 컨텍스트에서 token
및 tokenId
에 액세스할 수 있습니다. Atlas App Services 비밀번호 재설정 함수에서 이 정보를 전달하는 경우, 플랫폼별 딥링킹 또는 유니버설 링크를 사용하여 이러한 값을 앱에 다시 전달할 수 있습니다. 그런 다음 클라이언트 애플리케이션은 EmailPasswordAuthProvider.completeResetPassword 를 호출할 수 있습니다. 비밀번호 재설정 절차를 완료합니다.
// The password reset function takes any number of // arguments. final args = []; EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app); await authProvider.callResetPasswordFunction( "lisa@example.com", "n3wSt0ngP4ssw0rd!", functionArgs: args); // ... Later... // Token and tokenId are parameters you can access // in the App Services function context. You could send // this to the user via email, SMS, or some other method. final token = "someToken"; final tokenId = "someTokenId"; await authProvider.completeResetPassword( "n3wSt0ngP4ssw0rd!", token, tokenId);
서버측 성공 사례
Atlas App Services 비밀번호 재설정 함수 가 함수 내에서 추가 유효성 검사를 수행하거나 비밀번호 재설정을 시도하기 전에 사용자 ID의 유효성을 검사한 경우, success
을 반환하도록 Atlas App Services 함수를 구성할 수 있습니다. 그러나 해당 반환 값은 SDK의 callResetPasswordFunction()
로 전달되지 않으므로 클라이언트 앱은 success
상태를 처리하는 자체 로직을 구현해야 합니다.
이 예제의 함수를 호출하면 전체 비밀번호 재설정 프로세스가 수행됩니다.
// The password reset function takes any number of // arguments. You might ask the user to provide answers to // security questions, for example, to verify the user // should be able to complete the password reset. final args = [ "Snowball II", "Springfield Elementary School", "Bouvier" ]; EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app); await authProvider.callResetPasswordFunction( "lisa@example.com", "n3wSt0ngP4ssw0rd!", functionArgs: args);
비밀번호 재설정 이메일 보내기
사용자의 신원을 확인하기 위해 비밀번호 재설정 이메일을 보내려면 비밀번호 재설정 이메일을 보내도록 앱을 구성해야 합니다.
비밀번호 재설정 이메일 을 보내려면 가입에 사용된 이메일 을 EmailPasswordAuthProvider.resetPassword()에 전달합니다.
EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app); await authProvider.resetPassword("lisa@example.com");
비밀번호 재설정 이메일에는 token
및 tokenId
두 값으로 인코딩된 URL이 포함되어 있습니다. 비밀번호 재설정 절차를 완료하려면 클라이언트에서 또는 백엔드에서 사용자 지정 함수를 호출하여 사용자 비밀번호를 재설정하면 됩니다. SDK를 사용하여 비밀번호 재설정을 완료하려면 이 값을 EmailPasswordAuthProvider.completeResetPassword()에 전달합니다.
사용자가 30분 이내에 비밀번호 재설정 이메일에 포함된 URL을 방문하지 않으면 token
및 tokenId
이(가) 만료됩니다. 비밀번호 재설정 프로세스를 다시 시작해야 합니다.
EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app); await authProvider.completeResetPassword( "n3wSt0ngP4ssw0rd!", token, tokenId);
참고
비밀번호 재설정 이메일로 전송된 token
및 값에 액세스하려면 tokenId
딥 링크 가 포함된 사용자 지정 비밀번호 재설정 이메일 을 사용할 수 있습니다.