Comme vous le savez, les gars Laravel 5.2 est sorti il y a quelques jours. J'essaie cette nouvelle version. J'ai fait un nouveau projet en utilisant la commande suivante sur CLI:
laravel new testapp
Selon documentation de démarrage rapide de l'authentification , j'ai suivi la commande suivante pour échafauder les routes et les vues d'authentification:
php artisan make:auth
Cela a bien fonctionné. L'inscription fonctionne bien. Mais je suis confronté à un problème de connexion. Après la connexion, j'ai testé les éléments suivants dans le fichier route.php:
Route::get('/', function () {
dd( Auth::user());
return view('welcome');
});
Auth::user()
renvoie null
et aussi Auth::check()
et Auth::guest()
ne fonctionnent pas correctement. J'ai essayé la même chose encore et encore deux fois en créant de nouveaux projets mais je n'ai pas pu obtenir les bons résultats.
Ci-dessous est le route.php
Complet
<?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');
});
Quelqu'un peut-il m'aider? ou Quelqu'un est-il confronté au même problème? Comment puis-je le réparer?
Laravel 5.2 introduit le concept middleware groups : vous pouvez spécifier qu'un ou plusieurs middleware appartient à un groupe, et vous pouvez appliquer un groupe de middleware vers un ou plusieurs itinéraires
Par défaut Laravel 5.2 définit un groupe nommé web
, utilisé pour regrouper la session de gestion du middleware et d'autres utilitaires 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,
],
Donc, si vous souhaitez gérer la session, vous devez utiliser ce groupe de middleware pour toutes les routes dans lesquelles vous souhaitez utiliser l'authentification:
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() );
});
});
MISE À JOUR POUR LARAVEL VERSION> = 5.2.27
Au Laravel 5.2.27
version, toutes les routes définies dans routes.php
utilise par défaut le groupe de middleware web
. Cela est réalisé en app/Providers/RouteServiceProvider.php
:
protected function mapWebRoutes(Router $router)
{
$router->group([
'namespace' => $this->namespace, 'middleware' => 'web'
], function ($router) {
require app_path('Http/routes.php');
});
}
Vous n'avez donc plus besoin d'ajouter manuellement le groupe middleware web
à vos itinéraires.
Quoi qu'il en soit, si vous souhaitez utiliser l'authentification par défaut pour une route, vous devez toujours lier le middleware auth
à la route