Php Auth::check()未持久化Laravel 5.2
我面临着拉威尔5.2的问题Php Auth::check()未持久化Laravel 5.2,php,laravel,authentication,laravel-5.2,Php,Laravel,Authentication,Laravel 5.2,我面临着拉威尔5.2的问题 public function authenticate() { $user = Auth::attempt(['email' => Input::get('email'), 'password' => Input::get('password')]); if (Auth::check()) { return redirect()->intended('default');
public function authenticate()
{
$user = Auth::attempt(['email' => Input::get('email'), 'password' => Input::get('password')]);
if (Auth::check()) {
return redirect()->intended('default');
} else {
return 'wrong password or mail';
}
}
在authenticate()函数中,Auth::check()为true。但在我的自动中间件中,它返回false
public function handle($request, Closure $next, $guard = null)
{
if (!Auth::check()) { //Here Auth::check() is false
return redirect()->guest('auth/login');
}
return $next($request);
}
我不知道问题是什么,也不知道我做错了什么。。。
我尝试使用会话,但两个数据都无法持久
谢谢我在Kernel.php中做了一些更改 原始代码
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
];
修改为
protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
];
在中间件中使用
而不是
Auth::check()
使用Auth::guard()
如果它不起作用,请告诉我。如果您在Kernel.php中将中间件设置为
$middleware
,您应该尝试将其设置为$middlewareGroups
请查看是否有帮助。我已经检查了这个,但它没有帮助…您的所有路由都需要在web
中间件组中进行身份验证/会话吗?当我使用它时,我的路由无法正常工作:/\illumb\Session\Middleware\StartSession::class,
其目的是在请求之间持久化会话。这是你最初的问题,我已经解决了<代码>\Illumb\View\Middleware\ShareErrorsFromSession::class,这样做的目的是显示由于验证而产生的错误消息。若你们有其他问题,那个么你们应该在新问题中问他们。
public function handle($request, Closure $next, $guard = null)
{
if(Auth::guard($guard)->guest()) {
return redirect()->guest('auth/login');
}
return $next($request);
}