Вы можете переопределить столбец пароля в вашей пользовательской модели следующим образом:
// User.php
public function getAuthPassword()
{
return $this->custom_pw_field;
}
Однако, если вы действительно хотите передать массив, который явно не содержит password
в Auth::guard('xxx')->attempt($credentials)
(для которого нет никаких причин!), вам, вероятно, придется переопределить и добавить Illuminate\Auth\EloquentUserProvider
вручную, что кажется большой работой.
Так что я бы предложил просто использовать следующее:
Auth::guard('xxx')->attempt([
'email' => $request->post('email'),
'password' => $request->post('password')
]);
Клавиша password
должна затем проверить соответствие с custom_pw_field
, которое вы определили.
Пояснение
Посмотрев на источник Illuminate\Auth\EloquentUserProvider
и проверив функцию public function retrieveByCredentials(array $credentials)
, вы можете увидеть, что он делает:
- Найти первую запись в таблице аутентификации, которая соответствует всем условиям в массиве
$credentials
, за исключением password
(поэтому просто email
в приведенном выше примере ). Таким образом, вы можете добавить, например, еще один ключ, например is_webmaster
, например $authGuard->attempt(['email' => $request->post('email'), 'is_webmaster' => 1])
, который затем будет извлекать первую запись пользователя, имеющую эти свойства. - После получения этой записи ha sh из столбца пароля Затем проверяется против вашего ввода.