在Laravel中创建自定义身份验证

时间:2017-06-02 08:50:28

标签: php laravel authentication laravel-5.3

我有在php核心开发的项目。现在我已经创建了几个api 我能够在laravel中获取所有数据,但现在我对登录验证有点问题。

  public function postLogin(Request $request) {

       //    print_r($request->all());

           $data['email']=$request->email;
            $data['password']=$request->password;
        $response=  ApiModel::userLogin($data);

      //  Auth::login($response[0]);
     //   Auth::loginUsingId($response[0]->id);
       echo "<pre>";
     print_r($response[0]);

    }

我正在尝试创建身份验证会话,但是它给出了错误。我尝试了以下方法,但似乎无法正常工作

 Auth::login($response[0]);
Auth::loginUsingId($response[0]->id);

任何人都可以帮助我如何使用api保持用户会话

错误

  

SessionGuard.php第408行中的ErrorException:参数1传递给   Illuminate \ Auth \ SessionGuard :: login()必须是。的实例   Illuminate \ Contracts \ Auth \ Authenticatable,给出stdClass的实例,   呼唤   d:\ XAMPP \ htdocs中\ collab中\厂商\ laravel \框架\ SRC \照亮\验证\ AuthManager.php   在第294行并定义

2 个答案:

答案 0 :(得分:0)

您可以使用Auth::attempt(['fieldname'=>'value','someother'=>'anothervalue']);

答案 1 :(得分:0)

您需要在config/auth.php中定义正确的身份验证警示信息。 Auth::login()方法要求您默认传递User模型实例,此模型应实现Illuminate\Contracts\Auth\Authenticatable

您应该将默认保护提供程序设置为使用database驱动程序而不是eloquent并设置正确的表名。然后,您可以使用Auth::loginUsingId()使用其ID登录用户。

但是,如果您不想将数据库连接到Laravel,那么只需依赖API响应并根据该响应执行操作。您不能以这种方式强制进行经过身份验证的会话。