В паспорте Laravel всегда говорят, что требуется имя пользователя и пароль, даже если предоставлены действительные учетные данные - PullRequest
0 голосов
/ 06 мая 2018

Я занимаюсь разработкой REST API с использованием Laravel. Я реализую функцию аутентификации в моем API с помощью Passport. Я следую этому руководству - 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);

Пользователь зарегистрирован, и в базе данных создана запись. Используя идентификатор клиента и секрет, которые я получил при установке пароля и учетных данных пользователя, я сделал запрос на создание токена доступа, как в учебном пособии. Но я сделал запрос от клиента REST. Мой запрос как на скриншоте ниже. enter image description here

Как видите, я предоставил действительные учетные данные пользователя, идентификатор клиента и секрет. Когда я сделал запрос, клиентский инструмент REST снова запросил всплывающее окно с запросом учетных данных пользователя, как на скриншоте ниже.

enter image description here

Когда я снова ввожу учетные данные, он продолжает появляться в диалоговом окне, даже если учетные данные действительны. Вместо того, чтобы использовать имя пользователя, я попытался использовать электронную почту. Неважно, как я пытался, это просто запрос учетных данных пользователя. Почему и что не так с запросом? Как правильно передать учетные данные в запросе?

1 Ответ

0 голосов
/ 07 мая 2018

Паспорт Laravel предполагает, что у вас есть столбец username в таблице users, так как у вас нет этих столбцов, но вместо этого name, вам нужно сообщить об этом паспорт.

1-й метод с использованием аксессоров :

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

2-й метод с использованием findForPassport:

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