最近我开始使用laravel框架,我正在以老式的方式实现登录功能
Animal.kingdom
和HomeController
Route::post('login',['as'=>'validatelogin','uses'=>'HomeController@login']);
Route::get('home/{page?}/{id?}','HomeController@home');
在public function login(Request $request)
{
$matches=['email'=>$request->email];
$users =User::where($matches)->first();
if($users == FALSE)
{
$request->session()->flash(
'errors',
'Invalid Email');
return redirect('/');
}
else if($users->account_status==0)
{
$request->session()->flash(
'errors',
'Account is blocked please contact admin');
return redirect('/');
}
else if (!Hash::check($request->password,$users->user_password))
{
$request->session()->flash('errors', 'Invalid Password');
return redirect('/');
}
else
{
//login success set the session values
$request->session()->put('user',$users);
//redirect to home
return redirect('home');
}
}
函数中检查用户会话是否存在,如果没有重定向到登录页面,否则根据用户角色加载视图。
home
如何使用中间件重写上述代码,我发现了很多例子,但无法获得正确的解决方案
答案 0 :(得分:1)
首先,我强烈建议您使用Laravel登录。目前,当您将用户置于会话中时,您并未将他登录.Laravel使用 Auth 外观来管理用户登录,注销,警卫等。
您可以使用Auth::attempt(['email' => $email, 'password' => $password])
自动检查正确的凭据和登录(此方法将成功返回true)。之后,您可以使用Auth::check()
查看用户是否已登录,或使用 auth midleware来保护路由和控制器,因此您无需检查用户是否已在其中登录。< / p>