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.