Larvavel:使用自定义中间件登录

时间:2016-06-15 05:30:48

标签: php mysql laravel-5

最近我开始使用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

如何使用中间件重写上述代码,我发现了很多例子,但无法获得正确的解决方案

1 个答案:

答案 0 :(得分:1)

首先,我强烈建议您使用Laravel登录。目前,当您将用户置于会话中时,您并未将他登录.Laravel使用 Auth 外观来管理用户登录,注销,警卫等。

您可以使用Auth::attempt(['email' => $email, 'password' => $password])自动检查正确的凭据和登录(此方法将成功返回true)。之后,您可以使用Auth::check()查看用户是否已登录,或使用 auth midleware来保护路由和控制器,因此您无需检查用户是否已在其中登录。< / p>