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.