front - laravel php framework



Laravel 5.2 Auth가 작동하지 않음 (1)

아시다시피 Laravel 5.2는 며칠 전에 출시되었습니다. 나는이 새로운 버전을 시도하고있다. CLI에서 다음 명령을 사용하여 새 프로젝트를 만들었습니다.

laravel new testapp

인증 빠른 시작에 대한 문서에 따라 다음 명령을 사용하여 라우트와 인증보기를 비월합니다.

php artisan make:auth

괜찮 았어. 등록이 잘 진행되고 있습니다. 하지만 로그인 문제가 있습니다. 로그인 후 나는 route.php 파일에서 다음을 테스트했다.

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

Auth::user()null 반환하고 Auth::check()Auth::guest() 가 제대로 작동하지 않습니다. 나는 새로운 프로젝트를 만들어서 같은 일을 몇 번이고 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]');
});

누구든지 나를 도울 수 있습니까? 또는 같은 문제에 직면 해있는 사람이 있습니까? 어떻게 해결할 수 있습니까?


Laravel 5.2에서는 미들웨어 그룹 개념을 도입했습니다. 하나 이상의 미들웨어가 그룹에 속하도록 지정할 수 있으며 하나 이상의 경로에 미들웨어 그룹을 적용 할 수 있습니다

기본적으로 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 미들웨어를 라우트에 바인드해야합니다