Problème
Les pilotes d'authentification intégrés de Laravel ne répondent pas à vos besoins.
Solution
Construisez votre propre et étendez Laravel.
Étape 1 - Implémentez UserProviderInterface
Vous devez d'abord créer une classe qui gérera l'authentification. Nous allons créer une classe idiote qui validera au hasard toutes les informations d'identification et 50% du temps renvoie un utilisateur factice.
Utilisez illuminate \ auth \ genericUser;
Utilisez Illuminate \ Auth \ UserInterface;
Utilisez Illuminate \ Auth \ UserProviderInterface;
Classe DummyAuthProvider implémente UserProviderInterface
/ **
* Récupérez un utilisateur par leur identifiant unique.
*
* @param mixte $ id
* @return \ illuminate \ auth \ userInterface | null
* /
Fonction publique RetrieveByid ($ id)
// 50% du temps renvoie notre utilisateur factice
if (mt_rand (1, 100) <= 50)
retourner $ this-> dummyUser ();
// 50% du temps, échoue
retourner null;
/ **
* Récupérer un utilisateur par les informations d'identification données.
* Ne pas tester le mot de passe ici!
*
* @param array $ titres
* @return \ illuminate \ auth \ userInterface | null
* /
Fonction publique RetrieveByCredentials (Array $ Contalinals)
// 50% du temps renvoie notre utilisateur factice
if (mt_rand (1, 100) <= 50)
retourner $ this-> dummyUser ();
// 50% du temps, échoue
retourner null;
/ **
* Valider un utilisateur contre les informations d'identification données.
*
* @param \ illuminate \ auth \ userInterface $ utilisateur
* @param array $ titres
* @return bool
* /
Fonction publique validateCredentials (utilisateur userInterface $, array $ informationS)
// Nous supposerons que si un utilisateur a été récupéré, c'est bon
Retour Vrai;
/ **
* Renvoie un faux utilisateur générique
* /
fonction protégée dummyUser ()
$ attributs = array (
'id' = 123,
'username' => 'rires',
'mot de passe' => \ hash :: make ('supersecret'),
'name' => 'utilisateur factice',
));
retourner un nouveau générique ($ attributs);
/ **
* Nécessaire par Laravel 4.1.26 et plus
* /
Fonction publique RetrieveByToken ($ identifiant, $ Token)
return new \ exception («non implémenté»);
/ **
* Nécessaire par Laravel 4.1.26 et plus
* /
Fonction publique UpdateMemberToken (UserInterface $ user, $ token)
return new \ exception («non implémenté»);
?>
Étape 2 - étendre le composant Auth
Dans un fournisseur de services ou dans App / start / global.php
Ajouter la ligne suivante.
Auth :: Extend («Dummy», fonction ($ app)
Renvoie New MyApp \ Extensions \ DummyAuthProvider;
);
Étape 3 - Modifier le pilote AUTH.
Modifier l'application / config / auth.php et modifier le pilote.
'Driver' => 'Dummy',
Discussion
Même si cet exemple est idiot, il contient tous les composants.
Si vous ajoutez un filtre Auth à l'un de vos itinéraires, 50% du temps qu'un utilisateur sera authentifié.