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

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

от rachel , в категории: PHP , 2 года назад

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от caterina , 2 года назад

@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.

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

от karen.wisozk , год назад

@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
<div>
    <label for="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' => 'Incorrect username or password.',


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