Puede registrar una nueva cuenta de usuario, confirmar una dirección de correo electrónico de usuario o restablecer la contraseña de un usuario en el código de cliente React Native de su aplicación.
El @realm/react El gancho useEmailPasswordAuth tiene métodos y enumeraciones específicos para administrar usuarios de correo electrónico y contraseña. Consulte
Hook useEmailPasswordAuth para una referencia rápida.
Requisitos previos
Antes de poder autenticar a un usuario, debe:
Activa la autenticación por correo electrónico/contraseña en la aplicación. Para obtener detalles, consulta Autenticación por correo electrónico/contraseña en la documentación de App Services.
Configurar la autenticación de usuario en el cliente
@realm/react Tiene proveedores y enlaces para la autenticación de usuarios. Para configurar la autenticación de usuarios:
Configurar
@realm/reactproveedores.Inicie sesión un usuario con un componente de respaldo
UserProvider.
Configurar proveedores de @realm/react
Los componentes encapsulados por AppProvider pueden acceder a los ganchos useApp y useAuth. Estos componentes solo se renderizan si AppProvider se conecta correctamente al backend de App Services.
Los componentes encapsulados por UserProvider pueden acceder a usuarios autenticados con el gancho useUser. Estos componentes solo se renderizan si la aplicación tiene un usuario autenticado.
Para configurar la autenticación de usuario:
Envuelva todos los componentes que necesitan acceder a App Services en
AppProvider.Dentro de
AppProvider, envuelva todos los componentes a los que desea que tenga acceso un usuario autenticado conUserProvider.En
UserProvider, incluya una propiedadfallbackcon un componente que inicie sesión a un usuario. La aplicación representa este componente si no hay ningún usuario autenticado.
import React from 'react'; import {AppProvider, UserProvider} from '@realm/react'; // Fallback log in component that's defined in another file. import {LogIn} from './Login'; export const LoginExample = () => { return ( <ScrollView> <AppProvider id={APP_ID}> {/* If there is no authenticated user, mount the `fallback` component. When user successfully authenticates, the app unmounts the `fallback` component (in this case, the `LogIn` component). */} <UserProvider fallback={LogIn}> {/* Components inside UserProvider have access to the user. These components only mount if there's an authenticated user. */} <UserInformation /> </UserProvider> </AppProvider> </ScrollView> ); };
Iniciar sesión con un componente de respaldo
Los usuarios deben tener una cuenta de correo electrónico y contraseña registrada antes de poder iniciar sesión. Después de que un usuario inicia sesión, todos los componentes incluidos en UserProvider tienen acceso a una instancia de ese objeto de usuario a través del gancho useUser.
Para iniciar sesión como usuario con correo electrónico y contraseña:
Registrar usuario si aún no lo está.
Desestructurar
logInyresultdel ganchouseEmailPasswordAuth.Pase el correo electrónico y la contraseña del usuario a
LogIn()como un objeto.Manejar el
result.
export const LoginWithEmail = () => { const {logIn, result} = useEmailPasswordAuth(); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const performLogin = () => { logIn({email, password}); }; // Handle `result`... };
Registrar una nueva cuenta de usuario
Antes de registrar un nuevo usuario de correo electrónico/contraseña, necesita obtener su dirección de correo electrónico y contraseña. La dirección de correo electrónico no debe estar asociada a otro usuario de correo electrónico/contraseña y la contraseña debe tener entre 6 y 128 caracteres.
Después del registro, debe confirmar la dirección de correo electrónico del nuevo usuario antes de que pueda iniciar sesión en su aplicación.
Para registrar una nueva cuenta de usuario:
Desestructurar
registeryresultdel ganchouseEmailPasswordAuth.Pase el correo electrónico y la contraseña del usuario a
register()como un objeto.Confirme la dirección de correo electrónico del usuario.
type RegisterButtonProps = { email: string; password: string; }; const RegisterButton = ({email, password}: RegisterButtonProps) => { const {register, result, logIn} = useEmailPasswordAuth(); // Log in the user after successful registration useEffect(() => { if (result.success && result.operation === AuthOperationName.Register) { logIn({email, password}); } }, [result, logIn, email, password]); // For this example, the App Services backend automatically // confirms users' emails. const performRegistration = () => { register({email, password}); }; return ( <Button title="Register" onPress={performRegistration} /> ); };
Confirmar la dirección de correo electrónico de un usuario
Los nuevos usuarios deben confirmar que poseen su dirección de correo electrónico antes de iniciar sesión en la aplicación, a menos que el proveedor de autenticación esté configurado para confirmar automáticamente a los nuevos usuarios. El proceso de confirmación comienza al registrar un usuario y finaliza al confirmarlo desde su código de cliente.
La confirmación por correo electrónico requiere un token y un tokenId válidos. Estos valores se obtienen de diferentes fuentes según la configuración del proveedor de autenticación:
Envíe un correo electrónico de confirmación. Los
tokentokenIdvalores y se incluyen como parámetros de consulta en el Email Confirmation URL.Ejecutar una función de confirmación. Los
tokentokenIdvalores y se pasan a la función como argumentos.
Para confirmar un usuario registrado:
En App Services, asegúrese de que User Confirmation Method esté configurado en Send a confirmation email.
En su código de cliente, desestructura
confirmyresultdel ganchouseEmailPasswordAuth.Pasa
tokenytokenIdaconfirm()como un objeto.Manejar confirmación basada en
result.
interface ConfirmUserProps { token: string; tokenId: string; } const ConfirmUser = ({token, tokenId}: ConfirmUserProps) => { const {confirm, result} = useEmailPasswordAuth(); const performConfirmation = () => { confirm({token, tokenId}); }; // Handle `result`... }
Reintentar métodos de confirmación de usuario
El SDK proporciona métodos para volver a enviar correos electrónicos de confirmación de usuario o reintentar métodos de confirmación personalizados.
Reenviar un correo electrónico de confirmación
Si el proveedor está configurado para enviar un correo electrónico de confirmación, Atlas App Services enviará automáticamente un correo electrónico de confirmación cuando un usuario se registre. El correo electrónico contiene un enlace a la configuración Email Confirmation URL con un token válido durante 30 minutos. Si un usuario no sigue el enlace y lo confirma dentro de ese periodo, debe solicitar un nuevo correo electrónico de confirmación.
Para reenviar un correo electrónico de confirmación:
Desestructurar
resendConfirmationEmailyresultdel ganchouseEmailPasswordAuth.Pasar el correo electrónico del usuario a
resendConfirmationEmail()como un objeto.Manejar confirmación basada en
result.
const ResendUserConfirmationEmail = () => { const {resendConfirmationEmail, result} = useEmailPasswordAuth(); const [email, setEmail] = useState(''); const performResendConfirmationEmail = () => { resendConfirmationEmail({email}); }; // Handle `result`... }
Reintentar una función de confirmación de usuario
Puede volver a ejecutar su función de confirmación personalizada si es necesario.
Para volver a intentar una función de confirmación de usuario:
Desestructurar
retryCustomConfirmationyresultdel ganchouseEmailPasswordAuth.Pasar el correo electrónico del usuario a
retryCustomConfirmation()como un objeto.Manejar confirmación basada en
result.
const RetryCustomUserConfirmation = () => { const {retryCustomConfirmation, result} = useEmailPasswordAuth(); const [email, setEmail] = useState(''); const performRetryCustomConfirmation = () => { retryCustomConfirmation({email}); }; // Handle `result`... }
Restablecer la contraseña de un usuario
Restablecer la contraseña de un usuario es un proceso de varios pasos.
En tu aplicación cliente, proporciona una interfaz de usuario para que el usuario restablezca su contraseña. Tu aplicación de App Services puede enviar un correo electrónico o ejecutar una función personalizada para confirmar la identidad del usuario.
Después de confirmar la identidad del usuario, complete la solicitud de restablecimiento de contraseña.
Una vez finalizado el restablecimiento de la contraseña, el usuario puede iniciar sesión con la nueva contraseña.
Para obtener más información sobre cómo configurar su método preferido de restablecimiento de contraseña, consulte la documentación de Autenticación de contraseña/correo electrónico de los servicios de aplicaciones.
Restablecer contraseña con correo electrónico
Puedes enviar correos electrónicos de restablecimiento de contraseña para confirmar la identidad de los usuarios. Debes configurar tu aplicación de Servicios de Apps para que envíe un correo electrónico de restablecimiento de contraseña. Las aplicaciones móviles pueden gestionar el restablecimiento de contraseña directamente en la aplicación. Configura enlaces profundos en Android o enlaces universales en iOS.
Los valores token y tokenId de los correos electrónicos de restablecimiento de contraseña son válidos durante 30 minutos. Si los usuarios no consultan el correo electrónico Password Reset URL durante ese tiempo, los valores caducan y deben solicitar otro correo electrónico de restablecimiento de contraseña.
Para restablecer una contraseña con correo electrónico:
En App Services, asegúrese de que Password Reset Method esté configurado en Send a password reset email.
En su código de cliente, desestructura
sendResetPasswordEmail,resetPasswordyresultdel ganchouseEmailPasswordAuth.Pasar el correo electrónico del usuario a
sendResetPasswordEmail()como un objeto.Extraiga los valores
tokenytokenIdde la URL de restablecimiento de contraseña de correo electrónico.Pase la nueva contraseña de usuario,
tokenytokenIdaresetPassword()como un objeto.
const SendResetPasswordEmailButton = ({email}: {email: string}) => { const [errorMessage, setErrorMessage] = useState(''); const {sendResetPasswordEmail, result} = useEmailPasswordAuth(); const performSendResetPasswordEmail = () => { sendResetPasswordEmail({email: email}); }; // Handle `result`... };
interface ResetPasswordButtonProps { password: string; token: string; tokenId: string; } const ResetPasswordButton = ({ password, token, tokenId, }: ResetPasswordButtonProps) => { const [errorMessage, setErrorMessage] = useState(''); const {resetPassword, result} = useEmailPasswordAuth(); const performPasswordReset = () => { resetPassword({token, tokenId, password}); }; // Handle `result`... };
Llamar a una función de restablecimiento de contraseña
Puedes llamar a una función de App Services que definas para gestionar el restablecimiento de contraseñas. Debes configurar tu aplicación de App Services para que ejecute una función de restablecimiento de contraseña.
Esta función puede aceptar un nombre de usuario, una contraseña y cualquier número de argumentos adicionales. Puede usar estos argumentos para especificar detalles como las respuestas a preguntas de seguridad u otros desafíos que el usuario debe superar para restablecer su contraseña.
En App Services, define la función de restablecimiento de contraseña personalizada que se ejecuta al llamar a este método. Esta función debe devolver uno de tres estados posibles:
failpendingsuccess
Un estado fail se considera un error. El método callResetPasswordFunction() del SDK no acepta valores de retorno, por lo que no devuelve un estado pending ni success al cliente.
Para llamar a una función de restablecimiento de contraseña:
En App Services, cree una función de restablecimiento de contraseña.
En App Services, asegúrese de que Password Reset Method esté configurado en Run a password reset function y apúntelo a su nueva función.
En su código de cliente, desestructura
callResetPasswordFunctionyresultdel ganchouseEmailPasswordAuth.Pase el correo electrónico y la contraseña del usuario a
callResetPasswordFunction()como un objeto, seguido de cualquier otro argumento que haya definido para su función personalizada.
const ResetPasswordWithFunction = () => { const {callResetPasswordFunction, result} = useEmailPasswordAuth(); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const performResetPassword = () => { callResetPasswordFunction({email, password}, "extraArg1", "extraArg2"); }; }
Caso pendiente del lado del servidor
La función de restablecimiento de contraseña de App Services puede devolver pending si desea que el usuario realice algún paso adicional para confirmar su identidad. Sin embargo, este valor de retorno no se pasa al del callResetPasswordFunction() SDK, por lo que la aplicación cliente debe implementar su propia lógica para gestionar un pending estado.
Su función del servidor podría enviar un correo electrónico mediante un proveedor de correo electrónico personalizado. O bien, podría usar SMS para confirmar la identidad del usuario mediante un mensaje de texto.
Tienes acceso a token y tokenId en el contexto de la función de restablecimiento de contraseña de App Services. Si pasas esta información desde la función de restablecimiento de contraseña de App Services, puedes devolver estos valores a tu aplicación mediante enlaces profundos específicos de la plataforma o enlaces universales. Luego, tu aplicación cliente puede usar el enlace useEmailPasswordAuth para completar el proceso de restablecimiento de contraseña.
interface ResetPasswordButtonProps { password: string; token: string; tokenId: string; } const ResetPasswordButton = ({ password, token, tokenId, }: ResetPasswordButtonProps) => { const [errorMessage, setErrorMessage] = useState(''); const {resetPassword, result} = useEmailPasswordAuth(); const performPasswordReset = () => { resetPassword({token, tokenId, password}); }; // Handle `result`... };
Caso de éxito del lado del servidor
Si la función de restablecimiento de contraseña de App Services realiza una validación adicional dentro de la función, o si ya validó la identidad del usuario antes de intentar restablecer la contraseña, puede configurar la función de App Services para que success devuelva. Sin embargo, este valor de retorno no se pasa al del callResetPasswordFunction() SDK, por lo que la aplicación cliente debe implementar su propia lógica para gestionar un success estado.
Referencia del gancho useEmailPasswordAuth
El useEmailPasswordAuth gancho incluye métodos para optimizar la gestión de usuarios de correo electrónico y contraseña. También incluye información sobre el estado de la autenticación. Para más información, consulte la referencia de useEmailPasswordAuth.
También puede consultar la documentación de la @realm/react API para useEmailPasswordAuth.