Korzystanie z własnego sterownika uwierzytelniania

Korzystanie z własnego sterownika uwierzytelniania

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.