通过请求对象传递所有属性时加密密码

Encrypting password when passing all properteis through a request object

我有一个用户注册方法。我正在尝试清理我的代码,我将我的请求 class 传递的属性传递给创建方法。

注册方法

public function register(CreateUserRequest $createUser)
{
    $user = User::create($createUser->validated());

    return response()->json($user);
}

创建用户请求class

class CreateUserRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }

    public function rules()
    {
        return [
            'first_name' => 'required',
            'last_name' => 'required',
            'username' => 'required',
            'email' => 'required|email|unique:users,email',
            'phone_number' => 'required|unique:users,phone_number|phone:IE',
            'password' => 'required',
        ];
    }

    public function messages()
    {
        return [
            'phone_number.phone' => 'The phone number is invalid.',
        ];
    }
}

除了我的密码以纯文本格式存储之外,这非常有效。如何使用 bcrypt() 对其进行加密,而不必将每个 属性 都写入存储在创建方法中?

我会先获取数据,更新要散列的密码,然后创建用户。

public function register(CreateUserRequest $createUser) 
    {        
        $userData = $createUser->validated();
        $userData['password'] = Hash::make($userData['password']);
        $user = User::create($userData);
        return response()->json($user);
    }

注意:不要忘记导入 Illuminate\Support\Facades\Hash;

use Illuminate\Support\Facades\Hash;