如何通过自定义更改 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
文件中的字段名称
我刚刚安装了 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
文件中的字段名称