Nuevas características en Laravel 5.2

En este artículo, echaré un vistazo a las nuevas características de Laravel 5.2 y las describiré una por una. Las nuevas características se enumeran a continuación:

  • vinculación implícita del modelo de ruta
  • validación de matriz de formulario
  • API de middleware limitante de velocidad
  • grupos de middleware
  • andamio de autenticación
  • controladores de protección de autenticación múltiple

Controladores de protección de autenticación múltiple

Esta función lo ayudará, especialmente cuando necesite tener Doctrine ORM Auth con múltiples proveedores. En mis proyectos, prefiero tener autenticación de usuario y administrador separadas unas de otras; esta característica me ayudará a lograr esto fácilmente. Veamos un ejemplo config / auth.php:

// ... 'guardias' => ['usuario' => ['controlador' => 'sesión', 'proveedor' => 'usuarios',], 'admin' => ['controlador' => 'sesión', 'provider' => 'admin',], 'api' => ['driver' => 'token', 'provider' => 'users',],], // ... 'suppliers' => ['users '=> [' driver '=>' doctrine ',' model '=> App \ Entities \ Users :: class,],' admin '=> [' driver '=>' doctrine ',' model '=> App \ Entities \ Admin :: class,],], 

Ahora, cuando usas Auth :: intento ([…]), Laravel llamará a la guardia por defecto; así que si desea usar un guardia específico, simplemente llame con su nombre, como Auth :: guardia ('admin').

Para la autenticación en su grupo de ruta con un guardia específico, simplemente puede llamar al nombre del guardia:

Ruta :: grupo (['middleware' => ['auth: admin']], function () //… 

A veces, en lugar de un inicio de sesión simple en su aplicación, desea que los usuarios agreguen un api_token hasta el final de su cadena de consulta y úselo para autenticar su solicitud. El TokenGuard te permitirá lograrlo fácilmente.

Si desea usar la autenticación de token, primero debe agregar un único de 60 caracteres. api_token campo en la tabla de base de datos del modelo seleccionado (entidad en doctrina). Ahora puedes usar fácilmente api guardia en tu aplicación.

Vinculación implícita del modelo de ruta

Una de las nuevas características de Laravel 5.2 que es muy práctica es el enlace del modelo de ruta. Puede enlazar el modelo a su ruta; Antes de esto lo crearíamos manualmente:

Route :: get ('user / id', función ($ id) $ user = Users :: findOrFail ($ id); //…); 

O puedes hacer algo como:

 //… $ router-> modelo ('usuario', 'Aplicación \ Usuario'); // ... $ router-> get ('perfil / usuario', función (App \ Usuario $ usuario) //); 

Laravel 5.2 lo hace aún más fácil. Simplemente pase un parámetro en el cierre de la ruta, y lo tratará automáticamente como un enlace de modelo de ruta:

Route :: get ('user / id', función (App \ User $ user) // ...); 

Ahora es más fácil enlazar el modelo a su ruta..

Por defecto, Laravel usa la columna de identificación del modelo. Pero si espera que cambie la asignación, puede cambiar su modelo de la siguiente manera:

clase Usuario extiende Modelo función pública getRouteKeyName () return 'UserEmail';  

Elocuente implementa el Illuminate \ Contracts \ Routing \ UrlRoutable contrato, por lo que puede anular el getRouteKeyName () método. Define qué columna debe usarse para buscarla desde una URL.

Grupos de middleware

Como puede ver en la sección anterior, hemos creado una protección diferente para el usuario y el administrador. En este caso, si desea asignar múltiples middleware a un grupo de ruta de usuario o a su grupo de ruta de administración, Laravel 5.2 le permite crear un acceso directo con un nombre de tecla.

Para definir el grupo de middleware, debe modificar el kernel.php en su carpeta http:

protected $ middlewareGroups = [// ... 'admin' => ['acl', 'web', 'auth',]]; 

Y ahora puedes usarlo fácilmente en tu grupo de rutas..

Api Middle-Limiting Middleware

Si usa la API de otra aplicación como GitHub, para solicitudes que usan Autenticación Básica o OAuth, puede realizar hasta 5,000 solicitudes por hora. Esta limitación se llama limitación de velocidad. Si quieres tener algo como esto en tu aplicación, puedes usar la nueva característica de Laravel 5.2. Laravel 5.2 agregado nuevo acelerador middleware que manejará la limitación de velocidad. Por ejemplo, puede tener algo como:

Route :: group (['prefix' => 'api', 'middleware' => 'throttle'], function () Route :: get ('user', function () return Users :: all (); );); 

Por defecto, acelerador middleware permite 60 intentos por minuto en kernel.php:

// ... 'api' => ['acelerador: 60,1', 'auth: api',], 

Puede cambiarlo como desee o incluso personalizarlo para un enrutador específico:

Route :: group (['prefix' => 'api', 'middleware' => 'acelerador: 10,1000'], function () Route :: get ('user', function () return Users :: todos(); ); ); 

Andamio de autenticación

Laravel 5.2 proporciona una forma rápida de organizar todo lo que necesita para la autenticación mediante este comando:

php artesanal hacer: auth 

El uso de este comando en su nueva aplicación hará que las vistas de registro e inicio de sesión, así como las rutas para todas las autenticaciones. Mi archivo de ruta se ve como:

Route :: group (['middleware' => 'web'], function () Route :: auth (); Route :: get ('/ home', 'HomeController @ index');); 

los Ruta :: auth () Método es un atajo para definir las siguientes rutas:

// Rutas de autenticación ... $ this-> get ('login', 'Auth \ AuthController @ showLoginForm'); $ this-> post ('login', 'Auth \ AuthController @ login'); $ this-> get ('logout', 'Auth \ AuthController @ logout'); // Rutas de registro ... $ this-> get ('register', 'Auth \ AuthController @ showRegistrationForm'); $ this-> post ('register', 'Auth \ AuthController @ register'); // Rutas de restablecimiento de contraseña ... $ this-> get ('password / reset / token?', 'Auth \ PasswordController @ showResetForm'); $ this-> post ('password / email', 'Auth \ PasswordController @ sendResetLinkEmail'); $ this-> post ('password / reset', 'Auth \ PasswordController @ reset'); 

UNA HomeController También se generará, que es responsable de las solicitudes de inicio de sesión en el panel de control de su aplicación. Pero puede personalizar o eliminar este controlador según las necesidades de su aplicación.

Validación de matriz de formulario

Una de las cosas interesantes con las que he trabajado es la matriz de datos en formato HTML. Si coloca algo entre los corchetes, la matriz resultante se convierte en asociativa; De lo contrario, será numérico:

El PHP print_r ($ _ POST) el resultado será:

array ('name' => array ('first' => "last '=>")) 

Esto le ayudará a simplificar el proceso de validación y trabajar con formularios. Ahora veamos la validación de nuestros campos de usuario en Laravel 5.2:

 función pública Validator () $ this-> validate (Request :: all (), ['name. *. first' => 'required | string', 'name. *. last' => 'string',]) ;  

Es posible que haya notado que la forma de la validación es apellido, con un asterisco en el medio, que casi indica que podría agregar la clave de una matriz o cualquier otra cosa que pueda necesitar.

Conclusión

Laravel 5.2 fue una versión pequeña que puede permitirte trabajar mejor y más rápido. Como puede observar, muchas de estas características también son fáciles de aprender..