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

Я хотел бы изменить существующий модуль авторизации, предоставленный 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 5?
  • Давайте будем гением компьютера.