Usted está aquí:
Personalizar el controlador LoginDiscovery
Después de crear una página Detección de inicio de sesión, continúe configurando el inicio de sesión sin contraseña con una dirección de email o un número de teléfono modificando el controlador LoginDiscovery de Apex generado automáticamente. Al personalizar el controlador, puede controlar el proceso de inicio de sesión mientras Salesforce controla la verificación. El controlador encuentra usuarios basándose en el identificador que proporcionan en la página de inicio de sesión, como su dirección de email. Luego comprueba qué métodos de verificación registró el usuario previamente. El controlador inicia la sesión del usuario con el método que esté configurado.
- Desde Configuración, en el cuadro Búsqueda rápida, ingrese Clases de Apex y, a continuación, seleccione Clases de Apex.
- Encuentre la clase de controlador LoginDiscovery generada automáticamente. Su nombre comienza por
AutocreatedDiscLoginHandler, seguido de una cadena de números. - Junto al controlador LoginDiscovery, haga clic en Modificar.
- Utilice estos métodos para modificar el código generado.
UserManagement.registerVerificationMethod- Registra un método de verificación de identidad, como una dirección de email o número de teléfono. Solo los usuarios pueden registrar métodos de verificación. Pero usted y los usuarios pueden anular su registro.
UserManagement.deregisterVerificationMethod- Anula el registro de un método de verificación de identidad existente.
- Enumeración
Auth.VerificationMethod - Representa los métodos de verificación disponibles, que incluyen EMAIL, SALESFORCE_AUTHENTICATOR, SMS, TOTP y U2F.
UserManagement.formatPhoneNumber- Da formato a un número de teléfono celular para garantizar que esté en el formato requerido por Salesforce. Después de dar formato al número de teléfono, actualice el campo de celular del registro del usuario con el resultado de
formatPhoneNumber. Site.passwordlessLogin- Inicia la sesión de un usuario en un sitio empleando un método de verificación de identidad que registró anteriormente el usuario.
Para obtener más información acerca de estos métodos de Apex, consulte estos vínculos en la Guía de referencia de Apex.
Ejemplo de código de PasswordlessLogin
En este sencillo fragmento de código, un controlador de Apex contiene el método passwordlessLogin. Para una implementación completa, consulte Implementación de ejemplo de LoginDiscoveryHandler en la Guía de referencia de Apex
global with sharing class MFILoginController
{
//Input variables
global String input {get; set;}
public String startURL {get; set;}
public List<Auth.VerificationMethod> methods;
public String error;
global MFILoginController()
{
}
global PageReference login()
{
List<User> users = null;
// Empty input
if(input == null || input == '')
{
error = 'Enter Username';
return null;
}
users = [select name, id, email from User where username=:input];
if(users == null || users.isEmpty())
{
error = 'Can\'t find a user';
return null;
}
ID uid = users[0].id;
if (startURL == null) startURL = '/';
// Check which verification methods the user has already registered
TwoFactorMethodsInfo AvailableMethods = [select
HasUserVerifiedMobileNumber,
HasUserVerifiedEmailAddress,
HasSalesforceAuthenticator,
HasTotp,
HasU2F from TwoFactorMethodsInfo where userId=:uid];
// If no verification method is available, prompt the user to enter a password
// and invoke the site.login(usr,pwd) method
// if(AvailableMethods.size() == 0)
// Add verification methods in priority order
methods = new List<Auth.VerificationMethod>();
if(AvailableMethods.HasUserVerifiedMobileNumber)
methods.add(Auth.VerificationMethod.SMS);
if(AvailableMethods.HasUserVerifiedEmailAddress)
methods.add(Auth.VerificationMethod.EMAIL);
if(AvailableMethods.HasSalesforceAuthenticator)
methods.add(Auth.VerificationMethod.
SALESFORCE_AUTHENTICATOR);
if(AvailableMethods.HasTotp)
methods.add(Auth.VerificationMethod.U2F);
if(AvailableMethods.HasU2F)
methods.add(Auth.VerificationMethod.U2F);
return Site.passwordlessLogin(uid, methods, startURL);
}
}

