我以老式的方式编写了自定义登录功能 .
1.如果电子邮件或密码不正确,它将显示正确的错误消息(即无效的电子邮件,无效的密码,帐户被阻止)
2.如果登录正常,请使用用户表中的相应行设置会话 user
.
3.根据usertype指向不同的 url's
这是实施
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('adminlogin');
}
else if($users->account_status==0)
{
$request->session()->flash(
'errors',
'Account is blocked please contact admin');
return redirect('adminlogin');
}
else if (!Hash::check($request->password,$users->user_password))
{
$request->session()->flash('errors', 'Invalid Password');
return redirect('adminlogin');
}
else
{
$request->session()->put('user',$users);
if($users->user_type == 1)
{
$url = 'index';
}
else if($users->user_type == 3)
{
$url = 'index/package-home';
}
else
{
return view('errors.404');
}
return redirect($url);
}
}
此外,在每个页面中,我都使用会话值检查了用户身份验证,如果未设置 user
会话,则会重定向到登录屏幕 .
public function index(Request $request,$page='admin-home',$id=null)
{
if(!$request->session()->has('user'))
{
$request->session()->flash('errors', 'Session is expired');
return redirect('adminlogin');
}
//load dashboard
}
所以我的问题是我的方法对于自定义身份验证是正确的还是我还需要其他什么?
注意:我不喜欢使用laravel默认 auth
系统,因为它根据usertype(即admin,super admin等)选择't provide a way for custom error message or redirect to differnt url'