我最近从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
这样散列,这是我使用寄存器时生成的当前代码库中的表单。
答案 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')
]);
}