在用户模型上创建方法(bcrypt)

时间:2017-01-31 11:59:02

标签: laravel laravel-5.4

在查看新的laravel版本5.4后,我注意到使用" $user = User::create(request(['name', 'email','password']));"密码不是自动bcrypt密码,是我,或​​者模型创建方法默认密码是不是哈希?我不记得了,但并不认为这种方法"创造"已经这样做了?

3 个答案:

答案 0 :(得分:1)

Laravel Docs

中所述
  

如果您使用的是Laravel应用程序附带的内置LoginController和RegisterController类,它们将自动使用Bcrypt进行注册和身份验证。

如果您使用Laravel中提供的<input type="checkbox" id="cb3test" name="cb3" value="value1" onClick="cb3(this)">Value1,则无需手动RegisterController.php密码,否则您需要使用

Hash

在此检查寄存器控制器:

  

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

答案 1 :(得分:1)

尝试以下方法。

命名空间App \ Http \ Controllers;

使用Illuminate \ Http \ Request;

使用Illuminate \ Support \ Facades \ Hash;

使用App \ User;

类RegistrationsController扩展了Controller {

public function store()
{
    //validate the form
    $this->validate(request(),[
        'name'=> ['required', 'string', 'max:255'],
        'email'=> ['required', 'string', 'email', 'max:255', 'unique:users'],
        'password'=>['required', 'string', 'min:4', 'confirmed'],
    ]);

    //create and save the user

        $user =User::create([
       'name'=>request('name'), 
       'email'=>request('email'),

        //hash your password 

       'password'=>Hash::make(request('password'))
       ]);

    //sign in the user
    auth()->login($user);

    //redirect to the homepage
     return redirect()->home();
}

}

答案 2 :(得分:0)

在用户模型中,您需要添加以下功能,以加密默认密码。

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