Problem
Laravels innebygde autentiseringsdrivere passer ikke dine behov.
Løsning
Bygg din egen og utvid Laravel.
Trinn 1 - Implementere UserProviderInterface
Først må du opprette en klasse som vil håndtere autentiseringen. Vi oppretter en tullete klasse som tilfeldig vil validere eventuelle legitimasjoner og 50% av tiden returner en dummy -bruker.
Bruk Illuminate \ Auth \ Genericuser;
Bruk Illuminate \ Auth \ UserInterface;
Bruk Illuminate \ Auth \ UserProviderInterface;
KlassedummyauthProvider implementerer UserProviderInterface
/**
* Hent en bruker av deres unike identifikator.
*
* @param blandet $ id
* @reeturn \ Illuminate \ Auth \ UserInterface | NULL
*/
Offentlig funksjon Hentbyid ($ ID)
// 50% av tiden returner vår dummy -bruker
if (mt_rand (1, 100) <= 50)
returner $ this-> dummyuser ();
// 50% av tiden, mislykkes
return null;
/**
* Hent en bruker etter den gitte legitimasjonen.
* Ikke test passordet her!
*
* @param array $ legitimasjon
* @reeturn \ Illuminate \ Auth \ UserInterface | NULL
*/
Offentlig funksjon HentbyCredentials (Array $ legitimasjon)
// 50% av tiden returner vår dummy -bruker
if (mt_rand (1, 100) <= 50)
returner $ this-> dummyuser ();
// 50% av tiden, mislykkes
return null;
/**
* Valider en bruker mot den gitte legitimasjonen.
*
* @Param \ Illuminate \ Auth \ UserInterface $ bruker
* @param array $ legitimasjon
* @return bool
*/
offentlig funksjon ValidateCredentials (UserInterface $ bruker, Array $ legitimasjon)
// Vi antar at hvis en bruker ble hentet, er det bra
return True;
/**
* Returner en generisk falsk bruker
*/
beskyttet funksjonsdummyuser ()
$ attributter = matrise (
'id' = 123,
'brukernavn' => 'humrer',
'Passord' => \ Hash :: Make ('SuperSecret'),
'navn' => 'dummy bruker',
);
Returner ny genericuser ($ attributter);
/**
* Nødvendig av Laravel 4.1.26 og over
*/
Offentlig funksjon HentBytoken ($ identifikator, $ token)
return nytt \ unntak ('ikke implementert');
/**
* Nødvendig av Laravel 4.1.26 og over
*/
offentlig funksjon updateremembertoken (UserInterface $ bruker, $ token)
return nytt \ unntak ('ikke implementert');
?>
Trinn 2 - Utvid autoritetskomponenten
I en tjenesteleverandør eller i app/start/global.PHP
Legg til følgende linje.
Auth :: Extend ('Dummy', Function ($ App)
Returner nye MyApp \ Extensions \ DummyauthProvider;
);
Trinn 3 - Endre autoritetsføreren.
Rediger app/config/autor.PHP og endre sjåføren.
'Driver' => 'Dummy',
Diskusjon
Selv om dette eksemplet er dumt, inneholder det alle komponentene.
Hvis du legger til et autorfilter i noen av rutene dine, vil 50% av tiden en bruker bli autentisert.