我在以前的项目中使用了 laravel 5.1,我没有问题,但现在我安装了 Laravel 5.2,并且遇到了身份验证功能问题所以我使用以下路线
Route::group(['middleware' => ['web']], function () {
Route::controllers([
"auth" => "Auth'AuthController",
"password" => "Auth'PasswordController"
]) ;
});
没关系,我可以看到我的身份验证表单,但是当我将表单发送到邮政路由时,/auth/login
会话未设置,所以我得到了重定向,但是当我检查我是否登录时Auth::check()
我得到了false
不仅身份验证路由需要使用web
中间件组;所有需要它提供的功能的路由也需要使用它。
例如
Route::group(['middleware' => ['web']], function () {
Route::auth();
});
Route::get('example-1', function () {
dd(Auth::check()); // always will return false
});
Route::group(['middleware' => ['web']], function () {
Route::get('example-2', function () {
dd(Auth::check()); // works
});
});
Web 中间件组只是为您收集和运行大量中间件。
'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,
],
您会注意到上面的StartSession::class
。这意味着对于您希望会话数据可用的每个请求(用于身份验证等),您需要运行此中间件。
通过使用web
组,或在所需的路由/路由组上显式调用该中间件。
简单地使用此Route::auth();