Loading
Identifiera dina användare och hantera åtkomst
Anpassa LoginDiscovery-hanteraren

Anpassa LoginDiscovery-hanteraren

När du har skapat en Login Discovery-sida, fortsätt konfigurera lösenordsfri inloggning med en e-postadress eller ett telefonnummer genom att ändra den automatiskt skapade Apex LoginDiscovery-hanteraren. Genom att anpassa hanteraren styr du inloggningsprocessen medan Salesforce hanterar verifiering. Hanteraren hittar användare baserat på identifieraren som de anger på inloggningssidan, till exempel deras e-postadress. Därefter kontrolleras vilka verifieringsmetoder användaren tidigare har registrerat. Kontrollen loggar in användaren enligt den metod som är konfigurerad.

  1. I Inställningar, i snabbsökningsrutan, skriv Apex-klasser och välj sedan Apex-klasser.
  2. Hitta den automatiskt skapade LoginDiscovery-hanterarklassen. Dess namn börjar med AutocreatedDiscLoginHandler följt av en sträng med siffror.
  3. Bredvid LoginDiscovery-hanteraren, klicka på Redigera.
  4. Använd dessa metoder för att ändra den genererade koden.
    UserManagement.registerVerificationMethod
    Registrerar en identitetsverifieringsmetod, till exempel en e-postadress eller ett telefonnummer. Endast användare kan registrera verifieringsmetoder. Men du och användare kan avregistrera dem.
    UserManagement.deregisterVerificationMethod
    Avregistrerar en befintlig verifieringsmetod.
    Auth.VerificationMethod
    Representerar de tillgängliga verifieringsmetoderna, vilka innefattar EMAIL, SALESFORCE_AUTHENTICATOR, SMS, TOTP, och U2F.
    UserManagement.formatPhoneNumber
    Formaterar ett mobilnummer för att säkerställa att det är i det format som krävs av Salesforce. När du har formaterat telefonnumret, uppdatera mobilfältet i användarens post med utdata från formatPhoneNumber.
    Site.passwordlessLogin
    Loggar in en användare i en webbplats med en identitetsverifieringsmetod som användaren tidigare registrerat.

Mer information om dessa metoder finns i länkar i Apex Reference Guide.

Exempel på kod för PasswordlessLogin

I detta enkla kodstycke innehåller en Apex kontroll metoden passwordlessLogin. För en fullständig implementering, se Exempel på loginDiscoveryHandler i Apex Reference Guide

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);
    }
}
 
Laddar
Salesforce Help | Article