Laravel播种机中的密码字段上没有哈希

时间:2018-12-28 13:55:41

标签: php laravel

我最近从Laravel开发人员那里继承了一个项目进行研究。不幸的是,当我迁移用户表并为其设定种子时,密码加密无法正常工作,如下所示:

public function run()
{
    DB::table('users')->insert([
        'email' => 'admin@site.co.uk',
        'first_name' => 'Site',
        'last_name' => 'Admin',
        'username' => 'admin',
        'password' => 'localhostPassword'
    ]);
}

当我运行php artisan migrate --seed时,密码字段是上面的字符串文字,当我尝试登录时,它告诉我密码凭据不正确。

由于我不是Artisan Laravel开发人员,所以不确定从哪里开始,但是我希望密码字段像$2y$10$u/FcKFPKsgRs8whJZ6ODAO90qllmGjqROnkmuQnxcpynG6WaIbX8e这样散列,这是我使用寄存器时生成的当前代码库中的表单。

2 个答案:

答案 0 :(得分:3)

您需要先对其进行散列,然后再存储它:

use Illuminate\Support\Facades\Hash; // <-- import it at the top

//

    public function run()
    {
        DB::table('users')->insert([
            'email' => 'admin@site.co.uk',
            'first_name' => 'Site',
            'last_name' => 'Admin',
            'username' => 'admin',
            'password' => Hash::make('localhostPassword') // <---- check this
        ]);
    }

肥胖:一种替代方法是使用bcrypt()帮助程序而不是Hash::make()方法。

检查the documentation有关此方面的信息:

  

基本用法

     

您可以通过在make上调用Hash方法来哈希密码   外墙:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\Http\Controllers\Controller;

class UpdatePasswordController extends Controller
{
    /**
     * Update the password for the user.
     *
     * @param  Request  $request
     * @return Response
     */
    public function update(Request $request)
    {
        // Validate the new password length...

        $request->user()->fill([
            'password' => Hash::make($request->newPassword)
        ])->save();
    }
}

答案 1 :(得分:1)

您必须手动bcrypt如下所示的密码

public function run()
{
   DB::table('users')->insert([
      'email' => 'admin@site.co.uk',
      'first_name' => 'Site',
      'last_name' => 'Admin',
      'username' => 'admin',
      'password' => bcrypt('localhostPassword')
   ]);
}