문서 홈 → 애플리케이션 개발 → Atlas Device SDK
이메일/비밀번호 사용자 - Flutter SDK
이 페이지의 내용
Atlas App Services의 이메일/비밀번호 인증 제공자를 통해 클라이언트 코드에서 새 계정을 등록하고, 이메일 주소를 확인하고, 사용자 비밀번호를 재설정할 수 있습니다.
경고
버전 0.5.0 주요 변경 사항
Realm Flutter SDK 버전 0.5.0에는 이메일/비밀번호 인증에 대한 호환성이 손상되는 변경이 포함됩니다. 이번 변경은 이전 버전의 SDK에서 비밀번호 끝에 유니코드 null 문자 \u0000
가 추가되는 버그를 수정합니다.
따라서 0.5.0 이상의 버전을 사용하도록 애플리케이션을 업그레이드한 후에는 사용자는 비밀번호를 재설정하거나 새 계정을 만들어야 합니다. 0.5.0으로 업데이트한 후에는 이전 비밀번호가 더 이상 작동하지 않습니다.
시작하기 전에
클라이언트 코드 작성을 시작하기 전에 App Services에서 제공하는 다양한 이메일/비밀번호 인증 흐름을 이해하고 애플리케이션에 대한 백엔드 구현을 구성해야 합니다. App Services에는 이메일/비밀번호 사용자 ID를 확인하고 사용자 비밀번호를 재설정할 수 있는 다양한 방법이 있습니다. 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);
신규 사용자의 이메일 주소 확인
새 이메일/비밀번호 사용자를 등록한 후에는 사용자를 자동으로 확인하도록 App Services를 구성하지 않는 한 이메일 주소를 확인해야 합니다.
사용자 지정 확인 기능
이메일 주소 확인에 사용자 지정 함수 를 사용하도록 App Services를 구성하는 경우 사용자 지정 함수의 흐름 로직에 따라 사용자 확인을 처리합니다. App Services 백엔드는 사용자가 등록할 때 사용자 지정 함수를 호출합니다.
확인 이메일 전송하기
이메일 을 통한 사용자 확인을 처리하도록 App Services를 구성하는 경우에만 확인 이메일을 보내면 됩니다.
새로 생성된 사용자를 확인하려면 확인 token
및 tokenId
을 EmailPasswordAuthProvider.confirmUser() . 이는 사용자가 등록할 때 사용자의 이메일 주소로 전송된 이메일에 포함되어 있습니다.
EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app); await authProvider.confirmUser(token, tokenId);
참고
Flutter 앱에서 딥링크 사용
모바일 애플리케이션은 딥링킹을 구성하여 앱에서 직접 이메일 확인을 처리할 수 있습니다.
사용자 확인 재시도
SDK는 사용자 확인 이메일을 재전송하거나 사용자 지정 확인을 재시도하는 방법을 제공합니다.
사용자 확인 함수 재시도
사용자 지정 사용자 확인 함수를 다시 시도하도록 App Services 백 엔드를 구성한 경우 이 사용자 확인 방법을 사용합니다.
확인 함수를 다시 시도하려면 가입에 사용된 이메일을 EmailPasswordAuthProvider.retryCustomConfirmationFunction()에 전달합니다.
EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app); await authProvider.retryCustomConfirmationFunction("lisa@example.com");
사용자 확인 이메일 재전송
확인 이메일 을 다시 보내도록 App Services 백엔드를 구성한 경우 이 사용자 확인 방법을 사용하세요. 각 URL의 확인 토큰은 30 분 후에 만료됩니다. 사용자가 해당 기간 내에 링크를 따라 확인 및 확인을 하지 않을 경우, 새 확인 이메일을 요청해야 합니다.
확인 이메일을 다시 보내려면 가입에 사용된 이메일을 EmailPasswordAuthProvider.resendUserConfirmation()(으)로 전달하세요.
EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app); await authProvider.resendUserConfirmation("lisa@example.com");
사용자 비밀번호 재설정
사용자 비밀번호 재설정은 여러 단계를 거쳐야 합니다.
클라이언트 앱에서는 사용자가 비밀번호를 재설정할 수 있는 UI를 제공합니다. 그런 다음 App Services App은 이메일을 보내거나 사용자의 신원을 확인하는 사용자 지정 함수를 실행할 수 있습니다.
사용자 신원을 확인한 후 비밀번호 재설정 요청을 완료할 수 있습니다.
비밀번호 재설정이 완료된 후, 사용자는 새로운 비밀번호를 사용하여 로그인할 수 있습니다.
이러한 방법 중 앱에서 사용할 방법을 선택하려면 App Services 인증 비밀번호 재설정 동작을 구성합니다.
재설정 함수 호출
비밀번호 재설정 함수를 실행 하도록 앱을 구성할 때 EmailPasswordAuthProvider.callResetPasswordFunction() 을 호출할 때 실행되어야 하는 함수를 정의합니다. . 이 함수는 사용자 이름, 비밀번호 및 여러 개의 추가 인수를 사용할 수 있습니다. 이러한 인수를 사용하여 사용자가 비밀번호 재설정을 성공적으로 완료하기 위해 전달해야 하는 보안 질문 답변 또는 기타 과제와 같은 세부 정보를 지정할 수 있습니다.
비밀번호 재설정 흐름을 직접 정의하려는 경우 사용자 지정 비밀번호 재설정 함수를 사용하는 것이 더 나을 수 있습니다. 예를 들어 특정 도메인에서 사용자 지정 비밀번호 재설정 이메일을 보낼 수 있습니다. 또는 이메일 이외의 서비스를 사용하여 사용자의 신원을 확인할 수 있습니다.
App Services 측에서 이 메서드를 호출할 때 실행되는 사용자 지정 비밀번호 재설정 함수를 정의합니다. 이 함수는 세 가지 가능한 상태 중 하나를 반환할 수 있습니다.
fail
pending
success
SDK에서는 fail
상태를 오류로 처리합니다. SDK callResetPasswordFunction()
는 반환 값을 받지 않으므로 pending
또는 success
상태를 클라이언트에 반환하지 않습니다.
서버 측 보류 중인 사례
사용자가 신원을 확인하기 위해 몇 가지 추가 단계를 수행하도록 하려는 경우 App Services 비밀번호 재설정 함수 가 pending
을 반환할 수 있습니다. 그러나 해당 반환 값은 SDK의 callResetPasswordFunction()
로 전달되지 않으므로 클라이언트 앱은 pending
상태를 처리하는 자체 로직을 구현해야 합니다.
서버 측 함수가 사용자 지정 이메일 제공자를 사용하여 이메일을 보낼 수 있습니다. 또는 SMS를 사용하여 문자 메시지로 사용자의 신원을 확인할 수 있습니다.
App Services 비밀번호 재설정 함수 컨텍스트에서 및 에 액세스할 수 있습니다. App Services 비밀번호 재설정 함수에서 이 정보를 전달하는 경우 플랫폼별 딥링킹 또는 유니버설 링크를 사용하여 이러한 값을 앱에 다시 전달할 수 있습니다.token
tokenId
그런 다음 클라이언트 애플리케이션은 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);
서버측 성공 사례
App Services 비밀번호 재설정 함수 가 함수 내에서 추가 유효성 검사를 수행하거나 비밀번호 재설정을 시도하기 전에 사용자 ID의 유효성을 검사한 경우 success
을 반환하도록 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
및 두 값으로 인코딩된 URL이 포함되어 tokenId
있습니다. 비밀번호 재설정 절차를 완료하려면 클라이언트에서 또는 백엔드에서 사용자 지정 함수를 호출하여 사용자 비밀번호를 재설정하면 됩니다. SDK를 사용하여 비밀번호 재설정을 완료하려면 이 값을 EmailPasswordAuthProvider.completeResetPassword()에 전달합니다.
사용자가 30분 이내에 비밀번호 재설정 이메일에 포함된 URL을 방문하지 않으면 token
및 tokenId
이(가) 만료됩니다. 비밀번호 재설정 프로세스를 다시 시작해야 합니다.
EmailPasswordAuthProvider authProvider = EmailPasswordAuthProvider(app); await authProvider.completeResetPassword( "n3wSt0ngP4ssw0rd!", token, tokenId);
참고
비밀번호 재설정 이메일로 전송된 token
및 값에 액세스하려면 tokenId
딥 링크 가 포함된 사용자 지정 비밀번호 재설정 이메일 을 사용할 수 있습니다.