Изменить существующий модуль авторизации (адрес электронной почты для имени пользователя)

Я хотел бы изменить существующий модуль авторизации, предоставленный Laravel 5, вместо того, чтобы просить email он попросит username в базе данных.

Laravel ищет переменную $ username в файле:

Осветить \ Foundation \ Auth \ AuthenticatesUsers

 public function loginUsername() { return property_exists($this, 'username') ? $this->username : 'email'; } 

Как вы можете видеть, по умолчанию он будет называться «email».

Однако вы можете переопределить его в своем AuthController, добавив:

 protected $username = 'username'; 

Вам не нужно модифицировать модуль Auth для этого, просто передайте идентификатор пользователя в попытке. Используйте имя поля в массиве попыток как таковое:

 if (Auth::attempt(['username' => $username, 'password' => $password])) { return redirect()->intended('dashboard'); } 

Вы можете попробовать проверить файл Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers чтобы получить эту идею.

Затем добавьте переопределение postLogin на свой AuthController :

 public function postLogin(Request $request) { $this->validate($request, [ 'username' => 'required', 'password' => 'required', ]); $credentials = $request->only('username', 'password'); if ($this->auth->attempt($credentials, $request->has('remember'))) { return redirect()->intended($this->redirectPath()); } return redirect($this->loginPath()) ->withInput($request->only('username', 'remember')) ->withErrors([ 'username' => 'These credentials do not match our records.', ]); } 

Вам также нужно добавить use Illuminate\Http\Request; для вашего AuthController .

вы можете просто переопределить функцию имени пользователя auth из LoginController.php в laravel 5.3

 public function username(){ return 'username'; } 

в controllerах \ auth \ logincontroller добавьте это

  protected $username = 'user_name';//user_name field name 

затем перейдите в меню «Освежить \ Foundation \ Auth \ AuthenticatesUsers» и измените

  public function username() { return 'email';//change this with "return $this->username;" } 

с помощью этого метода. У вас может быть другой тип входа в другом controllerе, например, в других controllerах controllerа \ admin_auth \ logincontroller

 protected $username = 'phone_number'; 
  • Устойчивые сеансы по субдоменам в Laravel 5
  • Неопределенная переменная: ошибки в Laravel
  • Laravel перенаправляет обратно с помощью () сообщения
  • Interesting Posts

    динамическое распределение массива массивов в C

    Как установить Windows 7 на новый жесткий диск с помощью только старого (мертвого) жесткого диска на жестком диске?

    Мой интернет-провайдер заблокировал меня из моего маршрутизатора

    Открытие PowerShell в текущем рабочем каталоге из реестра

    Возвышение на Android Lollipop не работает

    Удалите объект JSON, отправленный из приложения Android в веб-службу WCF

    Когда следует использовать спин-блокировку вместо мьютекса?

    Сравните std :: wstring и std :: string

    Запись универсальной функции memoization в C ++ 11

    проверьте, была ли включена блокировка или нет.

    Как установить тайм-аут на метод recv сокета python?

    Проверьте, заблокирован ли файл в Java

    Возможность вызова телефона Android

    Использование JQuery Validate Plugin для проверки нескольких полей формы с одинаковыми именами

    Как я могу скрыть экран моего компьютера за пределы минимума?

    Давайте будем гением компьютера.