Php Laravel 5.2,auth::check登录后返回true,重定向后返回false

Php Laravel 5.2,auth::check登录后返回true,重定向后返回false,php,authentication,laravel-5.2,laravel-middleware,Php,Authentication,Laravel 5.2,Laravel Middleware,我正在尝试使用Laravel5.2内置的身份验证系统。登录似乎工作正常,如果我用Auth::check()替换return语句,它将返回true。但当我重定向到“/”时,Auth::check()在我的Auth中间件中突然返回false 会话创建方法: public function create(Request $request) { $email = $request->email; $password = $request->password; if

我正在尝试使用Laravel5.2内置的身份验证系统。登录似乎工作正常,如果我用Auth::check()替换return语句,它将返回true。但当我重定向到“/”时,Auth::check()在我的Auth中间件中突然返回false

会话创建方法:

public function create(Request $request) 
{
    $email = $request->email;
    $password = $request->password;

    if(Auth::attempt(['email' => $email, 'password' => $password])) {
        return redirect()->intended('/'); // returns true when replaced with Auth::check();
    }

    return redirect("login");

}
验证中间件:

public function handle($request, Closure $next, $guard = null)
{
    if (Auth::guest()) {
        if ($request->ajax() || $request->wantsJson()) {
            return response('Unauthorized.', 401);
        } else {
            return var_dump(Auth::check()); // returns false
        }
    }

    return $next($request);
}
路由文件:

Route::post('/create-session', 'SessionController@create');
Route::get('/logout', 'SessionController@logout');
Route::get('/login', function() {
   return view('login');
});

Route::group(['middleware' => ['web', 'auth']], function(){
   Route::get('/', 'HomeController@getIndex');
});

所有需要会话(Auth使用的)的路由都必须应用'web'中间件

此外:

您的
Auth::check()
正在一个代码块中执行,该代码块仅在
Auth::guest()
为true时运行
Auth::guest()
Auth::check()
相反

因此,您在中间件中说:如果当前用户是来宾(未经过身份验证),请检查他们是否是经过身份验证的用户,这在这一点上总是错误的

更新:


根据您的评论:不要将身份验证中间件添加到“web”组。如果您这样做,您将永远无法访问“web”路由,除非您在进行此更改之前已通过身份验证。如果您这样做,您甚至无法登录。

您使用的是哪种会话驱动程序?文件,但我也尝试过Cookie您在这些路由上同时使用web和auth中间件吗?请从
routes.php
发布您的代码。不,只是auth middlewareIt现在已修复,我必须在所有登录/注销路由上应用web中间件,然后在需要身份验证的路由上使用auth中间件。