ご存知のようにLaravel 5.2は数日前にリリースされました。この新しいバージョンを試しています。CLIで次のコマンドを使用して新しいプロジェクトを作成しました。
_laravel new testapp
_
Authentication Quickstartのドキュメント に従って、次のコマンドに従ってルートと認証のビューを足場にしました。
_php artisan make:auth
_
うまくいきました。登録は正常に機能しています。しかし、ログインで問題に直面しています。ログイン後、route.phpファイルで以下をテストしました。
_ Route::get('/', function () {
dd( Auth::user());
return view('welcome');
});
_
Auth::user()
はnull
を返していますが、Auth::check()
とAuth::guest()
も適切に動作していません。新しいプロジェクトを作成して、同じことを何度も何度も試みましたが、正しい結果を得ることができませんでした。
以下は完全な_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', 'HomeController@index');
});
_
誰も私を助けることができますか?または誰かが同じ問題に直面していますか?どうすれば修正できますか?
Laravel 5.2では、 ミドルウェアグループ の概念が導入されています。1つ以上のミドルウェアがグループに属することを指定でき、適用できます1つ以上のルートへのミドルウェアグループ
デフォルトではLaravel 5.2はミドルウェア処理セッションと他のhttpユーティリティをグループ化するために使用されるweb
という名前のグループを定義します:
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,
],
したがって、セッション処理が必要な場合は、認証を使用するすべてのルートにこのミドルウェアグループを使用する必要があります。
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の更新
Laravel 5.2.27
バージョンでは、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
ミドルウェアグループを手動でルートに追加する必要はありません。
とにかく、ルートにデフォルトの認証を使用したい場合、auth
ミドルウェアをルートにバインドする必要があります