Bruke din egen autentiseringsdriver

Bruke din egen autentiseringsdriver

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.