2015-12-31 35 views
18

Như các bạn đã biết Laravel 5.2 đã được phát hành cách đây vài ngày. Tôi đang thử phiên bản mới này. Tôi đã thực hiện một dự án mới sử dụng lệnh sau trên CLI:Laravel 5.2 Auth không hoạt động

laravel new testapp 

Theo documentation of Authentication Quickstart, Tôi làm theo các lệnh sau đây để các tuyến đường giàn giáo và quan điểm của xác thực:

php artisan make:auth 

Nó hoạt động tốt. Đăng ký đang hoạt động tốt. Nhưng tôi đang gặp vấn đề trong Đăng nhập. Sau khi đăng nhập Tôi đã thử nghiệm sau đây trong tập tin route.php:

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

Auth::user() đang trở lại null và cũng Auth::check()Auth::guest() không làm việc một cách thích hợp. Tôi đã cố gắng lặp đi lặp lại hai lần ba lần bằng cách tạo ra các dự án mới nhưng không thể có được kết quả chính xác.

Dưới đây là hoàn toàn 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]'); 
}); 

bất cứ ai có thể giúp tôi? hoặc Có ai phải đối mặt với cùng một vấn đề? Làm thế nào tôi có thể sửa chữa nó?

+0

bạn đang sử dụng middleware nhóm 'web' trong nhóm tuyến đường của bạn? Vui lòng đăng tất cả các routes.php của bạn – Moppo

+0

@Moppo đã thêm vào ở trên trong câu hỏi. –

Trả lời

29

Laravel 5.2 giới thiệu các khái niệm middleware groups: bạn có thể chỉ định một hoặc middleware hơn thuộc về một nhóm, và bạn có thể áp dụng một nhóm trung gian cho một hoặc nhiều tuyến đường

Theo mặc định Laravel 5.2 định nghĩa một nhóm có tên web, sử dụng để nhóm xử lý phiên và tiện ích http khác middleware:

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

vì vậy, nếu bạn muốn xử lý phiên làm việc, bạn nên sử dụng nhóm middleware này cho tất cả các tuyến đường mà bạn muốn sử dụng xác thực:

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

CẬP NHẬT CHO LARAVEL VERSION> = 5.2.27

Tính đến phiên bản Laravel 5.2.27, tất cả các tuyến đường quy định tại routes.php đang sử dụng bởi mặc định nhóm web middleware. Đó là đạt được trong app/Providers/RouteServiceProvider.php:

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

Vì vậy, bạn không cần nữa để thêm bằng tay nhóm web middleware để tuyến đường của bạn.

Nhưng dù sao, nếu bạn muốn sử dụng xác thực mặc định cho một con đường, bạn vẫn cần phải ràng buộc auth middleware để con đường

+3

Điều này có ý nghĩa hơn với tôi, sau khi trở ngại về tinh thần ban đầu của "không bạn không cần phần mềm trung gian' auth' để thực hiện công việc Auth, bạn cần phần mềm trung gian 'web'" ... – WannabeCoder

Các vấn đề liên quan