Как использовать паспорт Laravel с пользовательской колонкой имени пользователя


Теперь я использую что-то подобное для аутентификации пользователя на моем базовом сайте:

if (Auth::attempt($request->only(['id', 'password']))) {
            //
}

Как я могу изменить этот код для использования пользовательского столбца в качестве имени пользователя? https://laravel.com/docs/5.3/passport#password-grant-tokens

Author: Martijn Pieters, 2016-08-28

2 answers

Вы можете использовать метод findForPassport в своей пользовательской модели.

Этот метод принимает имя пользователя в качестве аргумента и возвращает модель пользователя

Например:

class User extends Authenticatable
{
    use HasApiTokens, Notifiable;

    // ... some code

    public function findForPassport($username) {
        return $this->where('id', $username)->first();
    }
}
 56
Author: Alexander, 2016-08-28 19:20:48

Немного поздно отвечать, но мне было трудно разобраться в этом, поэтому для полноты картины и, возможно, для того, чтобы помочь другим в будущем.

Если вы посмотрите на эту часть кода паспорта , вы увидите, что он также ищет метод validateForPassportPasswordGrant, поэтому в дополнение к ответу Александра вы можете аутентифицировать пользователя с помощью пользовательских полей.

Надеюсь, это кому-то поможет.

 3
Author: freddieRV, 2017-08-17 21:45:39