Laravel护照总是说要求用户名和密码,即使提供了有效的凭证

时间:2018-05-06 20:37:22

标签: php laravel api laravel-passport

我正在使用Laravel开发REST API。我正在使用Passport为我的API实现身份验证功能。我正在关注本教程 - https://scotch.io/@neo/getting-started-with-laravel-passport。我安装并配置成功。我现在唯一的问题是,当我从此端点请求令牌“oauth / token”时,API始终要求输入用户名和密码。请看下面的情景。

我在数据库中注册了这样的用户。

$user = [
      'name' => 'waiyanhein',
      'email' => 'iljimae.ic@gmail.com',
      'password' => bcrypt('testing')
   ];
   App\User::create($user);

注册用户并在数据库中创建记录。使用我在安装密码和用户凭据期间获得的客户端ID和密码,我发出了生成访问令牌的请求,如教程中所示。但是我从REST客户端发出了请求。我的请求如下面的屏幕截图所示。 enter image description here

如您所见,我提供了有效的用户凭据以及客户端ID和密码。当我发出请求时,REST客户端工具会提示弹出框再次请求用户凭据,如下面的屏幕截图所示。

enter image description here

当我再次输入凭据时,即使凭据有效,它也会一直弹出对话框。我尝试使用电子邮件,而不是使用用户名。无论我如何尝试,它只是要求用户凭据。请求的原因和错误是什么?如何正确传递请求中的凭据?

1 个答案:

答案 0 :(得分:0)

Laravel护照假定您在username表格中有users列,因为您没有此列,而是name,您需要告诉护照。

第一种方法using Accessors

public function getUsernameAttribute(){
   return $this->attributes['name'];
 }

使用findForPassport的第二种方法:

public function findForPassport($username) {
   return $this->where('name', $username)->first();
}