Problem
Wbudowane sterowniki uwierzytelniania Laravela nie pasują do twoich potrzeb.
Rozwiązanie
Zbuduj swój własny i rozszerz Laravel.
Krok 1 - Zaimplementuj UserProviderInterface
Najpierw musisz utworzyć klasę, która obsługuje uwierzytelnianie. Utworzymy głupią klasę, która losowo potwierdzi wszelkie poświadczenia i 50% czasu zwróci manekinu użytkownika.
Użyj Illuminate \ Auth \ Genericuser;
Użyj Illuminate \ Auth \ UserInterface;
Użyj Illuminate \ Auth \ userProviderInterface;
Klasa ManekinuuthProvider implementuje UserProviderInterface
/**
* Odzyskaj użytkownika po unikalnym identyfikatorze.
*
* @param mixed $ id
* @return \ Illuminate \ Auth \ UserInterface | NULL
*/
Funkcja publiczna PobieranieById ($ id)
// 50% czasu Zwróć naszego manekina
if (mt_rand (1, 100) <= 50)
zwrócić $ this-> maninSer ();
// 50% czasu, zawieść
powrót NULL;
/**
* Odzyskaj użytkownika według danych poświadczeń.
* Nie testuj hasła tutaj!
*
* @param array $ poświadczenia
* @return \ Illuminate \ Auth \ UserInterface | NULL
*/
Funkcja publiczna Pobieranie Credentials (tablica $ poświadczenia)
// 50% czasu Zwróć naszego manekina
if (mt_rand (1, 100) <= 50)
zwrócić $ this-> maninSer ();
// 50% czasu, zawieść
powrót NULL;
/**
* Sprawdzaj użytkownika w stosunku do danych poświadczeń.
*
* @param \ iluminate \ auth \ userinterface $ użytkownik
* @param array $ poświadczenia
* @return bool
*/
Funkcja publiczna ValidateCredentials (UserInterface $ Użytkownik, Array $ poświadczenia)
// Zakładamy, że jeśli użytkownik został odzyskany, jest dobrze
zwrócić true;
/**
* Zwróć ogólnego fałszywego użytkownika
*/
Protected Funkcja Manekin ()
$ atrybuts = tablica (
„ID” = 123,
„nazwa użytkownika” => „chichot”,
„hasło” => \ hash :: Make („superseSecret”),
„Nazwa” => „Dummy User”,
);
zwróć nowy genericuser ($ atrybuts);
/**
* Potrzebny przez Laravel 4.1.26 i powyżej
*/
Funkcja publiczna RentieveByToken ($ identyfikator, $ token)
zwróć nowy \ wyjątek („nie zaimplementowany”);
/**
* Potrzebny przez Laravel 4.1.26 i powyżej
*/
Funkcja publiczna updateMemberToken (userinterface $ użytkownik, $ token)
zwróć nowy \ wyjątek („nie zaimplementowany”);
?>
Krok 2 - Rozszerz komponent Auth
W usługodawcy lub w App/start/global.php
Dodaj następującą linię.
Auth :: „„ Manekin ”, funkcja ($ App)
zwróć nowe MyApp \ rozszerzenia \ manekinProvider;
);
Krok 3 - Zmień sterownik autoryzacji.
Edytuj aplikację/config/auth.PHP i zmień sterownik.
„sterownik” => „manekin”,
Dyskusja
Chociaż ten przykład jest głupi, zawiera wszystkie komponenty.
Jeśli dodasz filtr Auth do którejkolwiek z tras, 50% czasu zostanie uwierzytelniony.