如何通过自定义更改 laravel sanctum(电子邮件和密码)默认使用的列?

How to change columns used by default by laravel sanctum (email and password) by custom ones?

我刚刚安装了 laravel、sanctrum、livewire 作为新的身份验证系统。我需要为用户使用已经创建的 table。 我正在尝试将我的 User 模型更改为自定义模型。问题是这个其他模型没有默认列(电子邮件和密码)所以我需要个性化 sanctrum 如何使用它。 我已经创建了模型并在 config/auth.php 中更改了默认模型:

'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\Usuario::class,
        ],

然后我收到错误:

Illuminate\Database\QueryException
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'email' in 'where clause' (SQL: select * from `USUARIOS` where `email` = dgb1982uk@gmail.com limit 1)

我知道的信息不多,但可能有人以前做过这个。 提前致谢。

答案在文件夹 App\Actions\Fortify 的文件中。 所有这些文件都具有使用字段进行登录和密码特征的逻辑函数。

例如:

App\Actions\Fortify\CreateNewUser.php 文件对注册表单进行验证并创建一个新用户。因此,更改字段的自定义名称将使注册表在 sanctrum 中工作。

public function create(array $input)
    {
        Validator::make($input, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => $this->passwordRules(),
            'terms' => Jetstream::hasTermsAndPrivacyPolicyFeature() ? ['required', 'accepted'] : '',
        ])->validate();

        return Usuario::create([
            'custom_name_for_name' => $input['name'],
            'custom_name_for_email' => $input['email'],
            'custom_name_for_password' => Hash::make($input['password']),
        ]);
    }

因此,在简历中:

1- 我们需要创建自定义用户模型。

2- 更改 config/auth。php 默认模型。

'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\Usuario::class,
        ],

3-然后修改App\Actions\Fortify

文件中的字段名称