Как использовать Laravel Passport с пользовательским столбцом имени пользователя

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

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

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

27

Решение

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

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

Например:

class User extends Authenticatable
{
use HasApiTokens, Notifiable;

// ... some code

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

Другие решения

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

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

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

5

По вопросам рекламы [email protected]