我不知道如何对可填充的密码输入进行哈希处理。我正在尝试对其进行哈希处理,然后将其存储到数据库中。这是我到目前为止所做的
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:插入users
(name
,email
,updated_at
,{ {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'));