散列可填写的密码

时间:2018-08-15 07:18:07

标签: laravel laravel-5

我不知道如何对可填充的密码输入进行哈希处理。我正在尝试对其进行哈希处理,然后将其存储到数据库中。这是我到目前为止所做的

use App\User;
use Illuminate\Http\Request;

class RegistrationController extends Controller
{
  public function store()
  {
      $this->validate(request(), [
          'name' => 'required',
          'email' => 'required|email',
          'password' => 'required|confirmed'
      ]);

      $pass = bcrypt(request()->password);
      $user = User::create(request(['name', 'email', $pass]));

      auth()->login($user);
    return redirect()->home();
  }
}

class User extends Authenticatable
{
    use Notifiable;

    protected $fillable = [
        'name', 'email', 'password'
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];
}

它给了我QueryException: SQLSTATE [HY000]:常规错误:1364字段“密码”没有默认值(SQL:插入usersnameemailupdated_at,{ {1}})值(我插入的名称,插入的电子邮件,日期时间戳,日期时间戳)

1 个答案:

答案 0 :(得分:2)

在使用$user = User::create(request(['name', 'email', $pass]));时,您将数组传递给request方法,并且元素($pass)之一不是$request的键。

我认为它应该更像:

$user = User::create([
  'name' => request('name'),
  'email' => request('email'),
  'password' => $pass
]);

编辑

此外,请记住,Laravel提供了哈希表外观来帮助您进行加密:

您还可以使用哈希外观与bcrypt相同。

感谢lagbox进行修正。

$hashedPassword = Illuminate\Support\Facades\Hash:make(request('password'));