Usando su propio controlador de autenticación

Usando su propio controlador de autenticación

Problema

Los controladores de autenticación incorporados de Laravel no se ajustan a sus necesidades.

Solución

Construye el tuyo y extiende Laravel.

Paso 1: implementar userProviderInterface

Primero debe crear una clase que maneje la autenticación. Crearemos una clase tonta que validará aleatoriamente cualquier credencial y el 50% del tiempo devuelva a un usuario ficticio.

use iluminate \ auth \ Genericuser;
use Illuminate \ Auth \ UserInterface;
use Illuminate \ Auth \ UserProviderInterface;
clase DummyauthProvider implementa UserProviderInterface

/**
* Recuperar a un usuario por su identificador único.
*
* @param mixto $ id
* @return \ iluminate \ auth \ userInterface | NULL
*/
Función pública RemieveById ($ ID)

// El 50% del tiempo devuelve nuestro usuario ficticio
if (mt_rand (1, 100) <= 50)

devolver $ this-> dummyUser ();

// 50% del tiempo, falla
regresar nulo;

/**
* Recuperar a un usuario por las credenciales dadas.
* No pruebe la contraseña aquí!
*
* @param matriz $ credenciales
* @return \ iluminate \ auth \ userInterface | NULL
*/
Función pública RemileByCredentials (matriz $ credenciales)

// El 50% del tiempo devuelve nuestro usuario ficticio
if (mt_rand (1, 100) <= 50)

devolver $ this-> dummyUser ();

// 50% del tiempo, falla
regresar nulo;

/**
* Validar a un usuario contra las credenciales dadas.
*
* @param \ iluminate \ auth \ UserInterface $ user
* @param matriz $ credenciales
* @return bool
*/
Función pública ValidateCredentials (userInterface $ user, array $ credenciales)

// Asumiremos que si se recuperó un usuario, es bueno
devolver verdadero;

/**
* Devuelve un usuario falso genérico
*/
función protegida DummyUser ()

$ atributos = array (
'id' = 123,
'Nombre de usuario' => 'Risas',
'Password' => \ Hash :: Make ('SuperSecret'),
'Nombre' => 'Usuario ficticio',
);
devolver nuevo genicuser ($ atributos);

/**
* Necesito por Laravel 4.1.26 y más
*/
Función pública RemieVebyToken ($ identificador, $ token)

devolver nuevo \ excepción ('no implementado');

/**
* Necesito por Laravel 4.1.26 y más
*/
Función pública UpdaterAmemberToken (Interface de usuario $ user, $ token)

devolver nuevo \ excepción ('no implementado');


?>

Paso 2 - Extienda el componente de autores

En un proveedor de servicios o en aplicación/inicio/global.php Agregue la siguiente línea.

Auth :: extend ('dummy', function ($ app)

devolver nuevo MyApp \ Extensions \ DummyauthProvider;
);

Paso 3 - Cambie el controlador de autenticación.

Editar aplicación/config/auth.PHP y cambiar el controlador.
'Driver' => 'Dummy',

Discusión

Aunque este ejemplo es tonto, contiene todos los componentes.

Si agrega un filtro de autenticación a cualquiera de sus rutas, el 50% del tiempo un usuario será autenticado.