Verwenden Sie Ihren eigenen Authentifizierungsfahrer

Verwenden Sie Ihren eigenen Authentifizierungsfahrer

Problem

Die integrierten Authentifizierungs-Treiber von Laravel entsprechen nicht zu Ihren Anforderungen.

Lösung

Bauen Sie Ihre eigenen und verlängern Sie Laravel.

Schritt 1 - Implementieren Sie UserProviderInterface

Zuerst müssen Sie eine Klasse erstellen, die die Authentifizierung behandelt. Wir erstellen eine dumme Klasse, die zufällig alle Anmeldeinformationen validieren und in 50% der Zeit einen Dummy -Benutzer zurückgeben.

Verwenden Sie Illuminate \ Auth \ GenericUser;
Verwenden Sie Illuminate \ auth \ userInterface;
Verwenden Sie Illuminate \ Auth \ UserProviderInterface;
Klasse DummyAuthProvider implementiert UserProviderInterface

/**
* Abrufen Sie einen Benutzer nach seiner eindeutigen Bezeichnung ab.
*
* @param gemischt $ id
* @return \ illuminate \ auth \ userInterface | null
*/
öffentliche Funktion abrufen ($ id)

// 50% der Zeit geben unseren Dummy -Benutzer zurück
if (mt_rand (1, 100) <= 50)

$ this-> DummyUser () zurückgeben;

// 50% der Zeit, scheitern
null zurückkehren;

/**
* Abrufen Sie einen Benutzer nach den angegebenen Anmeldeinformationen ab.
* Testen Sie hier das Passwort nicht!
*
* @Param Array $ Anmeldeinformationen
* @return \ illuminate \ auth \ userInterface | null
*/
öffentliche Funktion ärgern sich bei

// 50% der Zeit geben unseren Dummy -Benutzer zurück
if (mt_rand (1, 100) <= 50)

$ this-> DummyUser () zurückgeben;

// 50% der Zeit, scheitern
null zurückkehren;

/**
* Validieren Sie einen Benutzer gegen die angegebenen Anmeldeinformationen.
*
* @param \ illuminate \ auth \ userInterface $ Benutzer
* @Param Array $ Anmeldeinformationen
* @return bool
*/
öffentliche Funktion ValidateCredentials (userInterface $ user, array $ connectionsnachweise)

// Wir werden annehmen, wenn ein Benutzer abgerufen wurde, ist es gut
zurückkehren;

/**
* Geben Sie einen generischen gefälschten Benutzer zurück
*/
geschützte Funktion DummyUser ()

$ attribute = array (
'id' = 123,
'Benutzername' => 'kichert' ',
'Passwort' => \ hash :: make ('superSecret'),
'Name' => 'Dummy -Benutzer' ',
);
Neue Generikuser zurückgeben ($ Attribute);

/**
* Benötigt von Laravel 4.1.26 und darüber
*/
öffentliche Funktion abrufen ($ identifier, $ token)

Neue \ Ausnahme zurückgeben ('nicht implementiert');

/**
* Benötigt von Laravel 4.1.26 und darüber
*/
öffentliche Funktion updaterememberToken (userInterface $ user, $ token)

Neue \ Ausnahme zurückgeben ('nicht implementiert');


?>

Schritt 2 - Erweitern Sie die Auth -Komponente

In einem Dienstleister oder in App/Start/global.Php Fügen Sie die folgende Zeile hinzu.

Auth :: Extend ('Dummy', Funktion ($ App)

Kehren Sie neue MyApp \ Extensions \ DummyAuthProvider zurück;
);

Schritt 3 - Ändern Sie den Auth -Treiber.

App/config/auth bearbeiten.PHP und ändern Sie den Treiber.
'Treiber' => 'Dummy',

Diskussion

Obwohl dieses Beispiel albern ist, enthält es alle Komponenten.

Wenn Sie einem Ihrer Routen einen Auth -Filter hinzufügen, wird ein Benutzer in 50% der Zeit authentifiziert.