Utilizzando il tuo driver di autenticazione

Utilizzando il tuo driver di autenticazione

Problema

I driver di autenticazione integrati di Laravel non si adattano alle tue esigenze.

Soluzione

Costruisci il tuo ed estendi Laravel.

Passaggio 1 - Implementare UserProviderInterface

Per prima cosa devi creare una classe che gestirà l'autenticazione. Creeremo una classe sciocca che convaliderà casualmente eventuali credenziali e il 50% delle volte restituisce un utente fittizio.

Usa Illuminate \ Auth \ GenericUser;
Utilizzare Illuminate \ Auth \ userInterface;
Utilizzare Illuminate \ Auth \ userProviderInterface;
Class DummyauthProvider implementa userProviderInterface

/**
* Recupera un utente dal proprio identificatore univoco.
*
* @param misto $ id
* @return \ illuminate \ autentica \ userinterface | null
*/
Funzione pubblica RecietByID ($ ID)

// il 50% delle volte restituisce il nostro utente fittizio
if (mt_rand (1, 100) <= 50)

return $ this-> dummyuser ();

// il 50% delle volte, fallimento
restituire null;

/**
* Recupera un utente dalle credenziali fornite.
* Non testare la password qui!
*
* @param array $ credenziali
* @return \ illuminate \ autentica \ userinterface | null
*/
Funzione pubblica RecietBeDentials (Array $ Credentials)

// il 50% delle volte restituisce il nostro utente fittizio
if (mt_rand (1, 100) <= 50)

return $ this-> dummyuser ();

// il 50% delle volte, fallimento
restituire null;

/**
* Convalida un utente contro le credenziali fornite.
*
* @param \ illuminate \ autentica \ userinterface $ utente
* @param array $ credenziali
* @return bool
*/
Funzione pubblica ConvalteCredentials (UserInterface $ User, Array $ Credentials)

// Supponiamo che se un utente sia stato recuperato, va bene
restituire vero;

/**
* Restituisci un utente falso generico
*/
Funzione protetta DummyUser ()

$ attributi = array (
'id' = 123,
'nome utente' => 'ridacchia',
'password' => \ hash :: make ('supersecret'),
'name' => 'dummy utente',
);
restituire new genericuser ($ attributi);

/**
* Necessario da Laravel 4.1.26 e sopra
*/
Funzione pubblica RecieveByToken ($ Identifier, $ token)

restituire new \ Exception ('non implementato');

/**
* Necessario da Laravel 4.1.26 e sopra
*/
Funzione pubblica UpdateMemberToken (userInterface $ utente, $ token)

restituire new \ Exception ('non implementato');


?>

Passaggio 2: estendere il componente dell'autenticazione

In un fornitore di servizi o in app/start/globale.PHP Aggiungi la seguente riga.

Auth :: Extend ('Dummy', Function ($ App)

Restituisce nuovo myApp \ Extensions \ DummyauthProvider;
);

Passaggio 3 - Cambia il driver di auth.

Modifica app/config/auth.PHP e cambia il driver.
'driver' => 'fittizio',

Discussione

Anche se questo esempio è sciocco, contiene tutti i componenti.

Se aggiungi un filtro di autentica.