En utilisant votre propre pilote d'authentification

En utilisant votre propre pilote d'authentification

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é.