【发布时间】:2022-11-14 23:56:31
【问题描述】:
所以我刚刚用Breeze启动了一个Laravel项目,我想改变默认表用户,问题是它没有用,我研究了几天,但没有得到任何成功的结果
我将尝试解释问题所在以及到目前为止我尝试过的内容。
首先,我创建了一个名为用户数据,而这张表,完全不同于用户桌子。 那些领域用户数据有,例如:名称值,密码值,年龄值,电子邮件值等(我也不得不提到桌子用户数据,它不使用迁移,因为我已经有一个 sql 文件,并将其直接添加到数据库中(我已经创建了带有主键和外键的表,所以我无法进行迁移,因为它会多花点时间),没有迁移我仍然可以获取数据,所以我不认为这可能是这个问题)。
实际上我正在使用 Breeze,但是,我也使用了 Auth 脚手架(PHP artisan make: Auth)
我尝试了什么:
经过几天的搜索,首先我创建了一个新模型,名为用户模型, this 的内容与用户模型但是我改变的是:
protected $table = 'users_data';
protected $fillable = [
*name_value*,
*password_value*,
];
和一个额外的功能来覆盖默认密码微风或 Auth(我猜):
public function getAuthPassword()
{
return $this->password_value;
}
接下来我去了conf/auth.php
我在那里指定了模型:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\UsersModel::class,
],
以及要使用的表格:
/*
|--------------------------------------------------------------------------
| Authentication Table
|--------------------------------------------------------------------------
|
| When using the "Database" authentication driver, we need to know which
| table should be used to retrieve your users. We have chosen a basic
| default value but you may easily change it to any table you like.
|
*/
'table' => 'users_data',
在此之后我去了视图登录.blade.php,并且只改变了电子邮件输入(对于我在不同页面上阅读的内容,更改密码输入会导致不同的问题,因为我需要做很多改变才能让它工作所以最好的办法是用获取授权密码,在模型中指定):
新名称输入:
x-input id="email" class="block mt-1 w-full" type="text" name="name_value" :value="old('name_value')" required autofocus />
毕竟我去了登录请求(登录验证),我将电子邮件替换为名称值
我试图调试这个:
dd(Auth::attempt($this->only('name_value', 'password'), $this->boolean('remember')));
并返回 false
我注意到有一个功能供应商/laravel/ui/auth-back/AuthenticatesUsers称为username(),返回“电子邮件”
当我看到我记得一个页面说这个函数也可以覆盖,所以我将返回值更改为name_value,它没有做任何事情
最后,澄清一下,
我不需要注册站点我只需要登录页面,因此在 $fillable 中我没有添加数据库的所有列,只是我需要登录的列(名称值,密码值)
如果有人可以帮助我并指导我,那就太好了,因为我的想法已经用完了(我可以单独使用 PHP 来完成,但是,我需要->中间件['Auth],如果用户存在,有没有办法激活中间件?)
【问题讨论】:
-
如果我们能看到您的 LoginController 类,我认为这也会有所帮助。
-
问题是我没有 LoginController 类,当我通过 Breeze 创建它时它不会生成 LoginController(我不知道它是否是版本问题),但是当我通过 Auth 脚手架创建它时(PHP artisan make : Auth) 它生成它。我更习惯微风,但我可以单独改用 Auth 脚手架
-
那么你是如何覆盖用户名方法的呢?
-
首先我说我重写了位于 vendor/laravel/ui/auth-back/AuthenticatesUsers 中的用户名函数,但是我认为我错了我删除了那里所做的更改并在我制作的新模型中重写它'UsersModel '
-
所以我在新模型中覆盖了用户名功能