找不到会话警卫

时间:2018-07-24 17:36:07

标签: php laravel session laravel-5 eloquent

我使用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不存在。

我的代码有什么问题?

3 个答案:

答案 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();
}