2017-01-31 9 views
1

После просмотра новой версии laravel 5.4 я замечаю, что при использовании «$user = User::create(request(['name', 'email','password']));» пароль автоматически не шифруется паролем, это я, или это не пароль, хэшированный по умолчанию на методе создания модели ? Я не помню, но не предполагается, что метод «создать» уже делает это?Создать метод для пользовательской модели (bcrypt)

+0

Нет, это может быть ваш код. Код Laravel для создания пользователя в AuthController с использованием bcryt() для защиты пароля – Vikash

+0

По умолчанию пароль зашифрован в RegisterController! где вы получили эту строку кода ??? – lewis4u

ответ

1

Как указано в Laravel Docs

Если вы используете встроенные классы LoginController и RegisterController, которые включены в приложение Laravel, они будут автоматически использовать Bcrypt для регистрации и аутентификации.

Если вы используете RegisterController.php, поставляемую в Laravel вам не нужно Hash пароль вручную еще вам нужно использовать

return User::create([ 
      'name' => $data['name'], 
      'email' => $data['email'], 
      'password' => bcrypt($data['password']), //<==encrypt here 
     ]); 

Проверьте контроллер регистра здесь:

https://github.com/laravel/laravel/blob/master/app/Http/Controllers/Auth/RegisterController.php#L63

+0

привет, в моем случае я создаю пользовательскую регистрациюController – Pedro

+0

Если вы «протянете» этот https://github.com/laravel/laravel/blob/master/app/Http/Controllers/Auth/RegisterController.php , Вам нужно еще раз зашифровать вручную – PaladiN

0

В модели пользователя вам необходимо добавить be be низкая функция, для пароля по умолчанию зашифрована.

public function setPasswordAttribute($value) 
     { 
      if($value != ""){ 
       $this->attributes['password'] = bcrypt($value); 
      } 
     }