php - Laravel 5.2 Auth no funciona
authentication laravel-5 (1)
Como ustedes saben, Laravel 5.2 fue lanzado hace unos días. Estoy probando esta nueva versión. Hice un nuevo proyecto usando el siguiente comando en CLI:
laravel new testapp
De acuerdo con la documentación de Autenticación de inicio rápido , seguí el siguiente comando para andamiar rutas y vistas de autenticación:
php artisan make:auth
Funcionó bien El registro está funcionando bien. Pero estoy enfrentando un problema en Iniciar sesión. Después de iniciar sesión probé siguiendo en el archivo route.php:
Route::get(''/'', function () {
dd( Auth::user());
return view(''welcome'');
});
Auth::user()
devuelve null
y también Auth::check()
y Auth::guest()
no funcionan correctamente. He intentado lo mismo una y otra vez dos veces haciendo nuevos proyectos pero no pude obtener los resultados correctos.
A continuación se muestra la route.php
completa.php
<?php
/*
|--------------------------------------------------------------------------
| Routes File
|--------------------------------------------------------------------------
|
| Here is where you will register all of the routes in an application.
| It''s a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/
Route::get(''/'', function () {
dd( Auth::());
return view(''welcome'');
});
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| This route group applies the "web" middleware group to every route
| it contains. The "web" middleware group is defined in your HTTP
| kernel and includes session state, CSRF protection, and more.
|
*/
Route::group([''middleware'' => [''web'']], function () {
//
});
Route::group([''middleware'' => ''web''], function () {
Route::auth();
Route::get(''/home'', ''HomeController@index'');
});
¿Alguien puede ayudarme? o ¿Alguien está enfrentando el mismo problema? ¿Cómo puedo arreglarlo?
Laravel 5.2 presenta el concepto de grupos de middleware : puede especificar que uno o más middleware pertenecen a un grupo, y puede aplicar un grupo de middleware a una o más rutas
De forma predeterminada, Laravel 5.2 define un grupo llamado web
, que se utiliza para agrupar la sesión de manejo de middleware y otras utilidades de http:
protected $middlewareGroups = [
''web'' => [
/App/Http/Middleware/EncryptCookies::class,
/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse::class,
/Illuminate/Session/Middleware/StartSession::class,
/Illuminate/View/Middleware/ShareErrorsFromSession::class,
/App/Http/Middleware/VerifyCsrfToken::class,
],
Por lo tanto, si desea administrar la sesión, debe usar este grupo de middleware para todas las rutas en las que desea usar la autenticación:
Route::group( [ ''middleware'' => [''web''] ], function ()
{
//this route will use the middleware of the ''web'' group, so session and auth will work here
Route::get(''/'', function () {
dd( Auth::user() );
});
});
ACTUALIZACIÓN PARA LA VERSIÓN LARAVEL> = 5.2.27
A partir de la versión 5.2.27
de Laravel, todas las rutas definidas en routes.php
utilizan por defecto el grupo de middleware web
. Eso se logra en la app/Providers/RouteServiceProvider.php
:
protected function mapWebRoutes(Router $router)
{
$router->group([
''namespace'' => $this->namespace, ''middleware'' => ''web''
], function ($router) {
require app_path(''Http/routes.php'');
});
}
De modo que ya no necesita agregar manualmente el grupo de middleware web
a sus rutas.
De todos modos, si desea utilizar la autenticación predeterminada para una ruta, aún necesita vincular el middleware de auth
a la ruta