2015-12-31 13 views
18

あなたが知っているように、Laravel 5.2は数日前にリリースされました。私はこの新しいバージョンを試しています。 documentation of Authentication Quickstart 1としてLaravel 5.2 Auth not working

laravel new testapp 

、私は認証の足場ルートとビューに次のコマンドを追っ:私は、CLIで次のコマンドを使用して、新しいプロジェクトが作ら

php artisan make:auth 

それがうまく働きました。登録は正常に動作しています。しかし、私はログインの問題に直面しています。ログイン後、私はroute.phpファイルに次のテスト:

Route::get('/', function() { 
    dd(Auth::user()); 
    return view('welcome'); 
}); 

Auth::user()nullともAuth::check()を返すとAuth::guest()され、適切に機能していません。私は新しいプロジェクトを作ることで何度も同じことを2回3回試みましたが、正しい結果を得ることはできませんでした。

以下

が完了route.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', '[email protected]'); 
}); 

で誰も私を助けることができますか?または誰も同じ問題に直面していますか?どうすれば修正できますか?

+0

authミドルウェアをバインドする必要がありますか?あなたのすべてのroutes.phpを投稿してください。 – Moppo

+0

@Moppoは上記の質問に追加しました。 –

答えて

29

Laravel 5.2はmiddleware groups概念が導入されています、Laravel 5.2はwebという名前のグループを定義する1つまたは複数のミドルウェアがグループに属することを指定でき、デフォルトでは1つまたは複数のルート

にミドルウェア・グループを適用することができますだから

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, 
], 

あなたはセッション処理をしたい場合、あなたが認証を使用する場合、使用するすべてのルートのために、このミドルウェアグループを使用する必要があります:グループにミドルウェアセッション処理や他のHTTPユーティリティを使用

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()); 
    });  
}); 

Laravel 5.2.27バージョンのよう> = 5.2.27

LARAVEL VERSION FOR UPDATE、routes.phpで定義されたすべてのルートは、デフォルトでwebミドルウェア群を使用しています。それはapp/Providers/RouteServiceProvider.phpで達成される:

protected function mapWebRoutes(Router $router) 
{ 
    $router->group([ 
     'namespace' => $this->namespace, 'middleware' => 'web' 
    ], function ($router) { 
     require app_path('Http/routes.php'); 
    }); 
} 

ですから、あなたのルートに手動でwebミドルウェア・グループを追加することはもう必要はありません。あなたはルートのデフォルトの認証を使用する場合は、あなたのルートグループにミドルウェアグループ `web`は次を使用している

はとにかく、あなたはまだルート

+3

これは、私にとって、あなたがAuthの仕事をするために 'auth'ミドルウェアを必要としないという最初の精神的な障害の後、' web'ミドルウェアが必要です。 – WannabeCoder