Laravel 5.2 Auth ne fonctionne pas
comme vous le savez, Laravel 5.2 a été libéré il y a quelques jours. Je suis en train d'essayer cette nouvelle version. J'ai fait un nouveau projet à l'aide de la commande suivante sur la ligne de commandes:
laravel new testapp
selon documentation de L'authentification Quickstart, j'ai suivi la commande suivante à l'échafaud les itinéraires et les points de vue de l'authentification:
php artisan make:auth
ça a bien marché. L'inscription fonctionne bien. Mais je suis face à problème dans la Connexion. Après la connexion, j'ai essayé de suivre en route.php fichier:
Route::get('/', function () {
dd( Auth::user());
return view('welcome');
});
Auth::user()
est de retour null
et Auth::check()
et Auth::guest()
ne fonctionnent pas correctement. J'ai essayé la même chose encore et encore deux fois trois fois en faisant de nouveaux projets mais n'a pas pu obtenir les résultats corrects.
ci-dessous se trouve leroute.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');
});
quelqu'un Peut-il m'aider? ou Est ce que quelqu'un face au même problème? Comment puis-je résoudre ce problème?
1 réponses
Laravel 5.2 introduit le middleware de groupes concept: vous pouvez spécifier un ou plusieurs middleware appartient à un groupe, et vous pouvez appliquer un middleware groupe à un ou plusieurs itinéraires
Par défaut Laravel 5.2 définit un groupe nommé web
, utilisé pour grouper 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 voulez gérer la session, vous devez utiliser ce groupe middleware pour tous les itinéraires dans lequel 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() );
});
});
UPDATE FOR LARAVEL VERSION >= 5.2.27
à partir de Laravel 5.2.27
version, toutes les routes définies dans routes.php
utilisez par défaut web
middleware de groupe. 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 web
middleware de groupe pour vos itinéraires.
de toute façon, si vous souhaitez utiliser l'authentification par défaut pour un route, vous avez encore besoin de lier le auth
middleware de la route