Du är här:
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.
- I Inställningar, i snabbsökningsrutan, skriv Apex-klasser och välj sedan Apex-klasser.
- Hitta den automatiskt skapade LoginDiscovery-hanterarklassen. Dess namn börjar med
AutocreatedDiscLoginHandlerföljt av en sträng med siffror. - Bredvid LoginDiscovery-hanteraren, klicka på Redigera.
- 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);
}
}
