Как сделать авторизацию по колонке name вместо email в laravel 5.4?

Пользователь

от rachel , в категории: PHP , 8 месяцев назад

Как сделать авторизацию по колонке name вместо email в laravel 5.4?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от caterina , 7 месяцев назад

@rachel 

Для того, чтобы изменить стандартную авторизацию по электронной почте на авторизацию по имени пользователя в Laravel 5.4, необходимо выполнить следующие шаги:

  1. Откройте файл app/Http/Controllers/Auth/LoginController.php и найдите метод username(). Этот метод возвращает название поля, которое будет использоваться для аутентификации. По умолчанию это поле email, замените его на name:
1
2
3
4
public function username()
{
    return 'name';
}


  1. Теперь нужно обновить валидацию для авторизации. Откройте файл resources/views/auth/login.blade.php и замените в форме электронную почту на имя пользователя:
1
2
3
4
5
6
7
<div>
    <label for="name">Name</label>

    <div>
        <input id="name" type="text" name="name" value="{{ old('name') }}" required autofocus>
    </div>
</div>


  1. В файле app/Http/Controllers/Auth/LoginController.php также нужно изменить метод authenticate() для того, чтобы проверить имя пользователя вместо адреса электронной почты. Замените:
1
2
3
if (Auth::attempt(['email' => $email, 'password' => $password], $remember)) {
    return redirect()->intended($this->redirectTo);
}


на

1
2
3
if (Auth::attempt(['name' => $name, 'password' => $password], $remember)) {
    return redirect()->intended($this->redirectTo);
}


  1. Обновите сообщение об ошибке, которое выводится, если пользователь вводит неправильный адрес электронной почты или пароль. Откройте файл resources/lang/en/auth.php и замените строку:
1
'failed' => 'These credentials do not match our records.',


на

1
'failed' => 'These credentials do not match our records or the user does not exist.',


Теперь вы можете использовать имя пользователя для авторизации в Laravel 5.4.