Laravel 5.2 Аутентификация не работает
Как вы, ребята, знаете, Laravel 5.2 был выпущен несколько дней назад. Я пробую эту новую версию. Я создал новый проект, используя следующую команду в командной строке:
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()
не работают должным образом. Я пробовал одно и то же снова и снова два-три раза, создавая новые проекты, но не смог получить правильных результатов.
Ниже приведен полный 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');
});
Кто-нибудь может мне помочь? или кто-нибудь сталкивается с такой же проблемой? Как я могу это исправить?
1 answers
Laravel 5.2 представляет группы промежуточного программного обеспечения концепция: вы можете указать, что одно или несколько промежуточных программ принадлежит группе, и вы можете применить группу промежуточного программного обеспечения к одному или нескольким маршрутам
По умолчанию Laravel 5.2 определяет группу с именем web
, используемую для группировки сеанса обработки промежуточного программного обеспечения и других утилит 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,
],
Итак, если вы хотите обрабатывать сеансы, вам следует использовать эту группу промежуточного программного обеспечения для всех маршрутов, в которых вы хотите использовать аутентификация:
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
к маршруту