我使用laravel,并使用mltiple auth进行连接。 我的身份验证代码
if (Auth::guard('patient')->attempt(['email' => $email, 'password' => $password])) {
//if(Auth::attempt($request->only($field, 'password'))){
//put session
Session::put('key', $user->id);
//change le status en ligne
Patient::WHERE('id', Auth::patient()->id)->UPDATE(['status' => 1]);
//redirect url
return redirect('/users/profile')->with('success', 'Bienvenue '.$user->firstname.', vous êtes bien connecté');
}else{
return redirect('/users/login')->with('error', 'Email or username incorrect!');
}
在auth.php中,我有
'guards' => [
'user' => [
'driver' => 'session',
'provider' => 'users',
],
'patient' => [
'driver' => 'session',
'provider' => 'patients',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
],
],
执行后,我发现此错误
BadMethodCallException 方法Illuminate \ Auth \ SessionGuard :: Patient不存在。
我的代码有什么问题?
答案 0 :(得分:1)
您的代码有什么问题,patient
上没有名为SessionGuard
的方法。
Auth::patient()
是Auth::guard(null)->patient()
...在警卫上没有定义patient
方法,也没有。
Auth::user()
是Auth::guard(null)->user()
,这意味着返回当前经过身份验证的用户。 user
并不表示用户模型或配置文件中定义的任何名称。 user
是使用该应用程序的当前人员/实体的概念。使用它的用户。
答案 1 :(得分:0)
if (Auth::guard('patient')->attempt(['email' => $email, 'password' => $password])) {
//if(Auth::attempt($request->only($field, 'password'))){
//put session
Session::put('key', $user->id);
//change le status en ligne
Patient::WHERE('id', Auth::guard('patient')->user()->id)->UPDATE(['status' => 1]);
//redirect url
return redirect('/users/profile')->with('success', 'Bienvenue '.$user->firstname.', vous êtes bien connecté');
}else{
return redirect('/users/login')->with('error', 'Email or username incorrect!');
}
答案 2 :(得分:0)
如果定义自己的登录名或注册名,则出现此错误 BadMethodCallException 方法Illuminate \ Auth \ SessionGuard ::保护不存在。 然后,您应该导入或使用以下定义的会话类 使用Illuminate \ Support \ Facades \ Session; 并且您的函数应定义为
public function postSingIn(Request $request)
{
if(Auth::attempt(['email'=>$request['email'],['password'=>$request['password']]]))
{
return redirect()->action('BackendController@deshboard');
}
return redirect()->back();
}