Как использовать паспорт Laravel с пользовательской колонкой имени пользователя
Теперь я использую что-то подобное для аутентификации пользователя на моем базовом сайте:
if (Auth::attempt($request->only(['id', 'password']))) {
//
}
Как я могу изменить этот код для использования пользовательского столбца в качестве имени пользователя? https://laravel.com/docs/5.3/passport#password-grant-tokens
2 answers
Вы можете использовать метод findForPassport в своей пользовательской модели.
Этот метод принимает имя пользователя в качестве аргумента и возвращает модель пользователя
Например:
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
// ... some code
public function findForPassport($username) {
return $this->where('id', $username)->first();
}
}
Немного поздно отвечать, но мне было трудно разобраться в этом, поэтому для полноты картины и, возможно, для того, чтобы помочь другим в будущем.
Если вы посмотрите на эту часть кода паспорта , вы увидите, что он также ищет метод validateForPassportPasswordGrant
, поэтому в дополнение к ответу Александра вы можете аутентифицировать пользователя с помощью пользовательских полей.
Надеюсь, это кому-то поможет.