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?

18
demandé sur Moppo 2015-12-31 17:55:53

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

29
répondu Moppo 2016-04-19 11:01:35