首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何更改“用户”auth表并使用另一个“Laravel”

如何更改“用户”auth表并使用另一个“Laravel”
EN

Stack Overflow用户
提问于 2022-05-13 09:10:32
回答 2查看 928关注 0票数 1

所以我刚开始了一个用Breeze做的Laravel项目,我想改变默认的表users,问题是它不起作用,我做了好几天的研究,没有得到任何成功的结果

我会尽量解释问题所在,以及到目前为止我尝试了些什么。

首先,我创建了一个名为users_data的新表,这个表与用户表完全不同。users_data所拥有的字段有: name_value、password_value、age_value、email_value等(我还必须提到,对于表users_data,它不使用迁移,因为我已经有了一个sql文件,并将其直接添加到db中(我已经创建了带有主键的表和外键,所以我无法进行迁移,因为这需要很长的时间),而没有迁移,我仍然可以获得数据,所以我认为不可能是这个问题)。

实际上,我使用的是Breeze,但是,我也使用了Auth脚手架(PHP手工制作: Auth)

我试过什么:

经过几天的搜索,首先我创建了一个名为UsersModel的新模型,它的内容与用户模型相同,但是我要更改的是:

代码语言:javascript
运行
复制
protected $table = 'users_data';

protected $fillable = [
    *name_value*,
    *password_value*,
];

还有一个额外的函数来覆盖默认的密码或Auth (我猜):

代码语言:javascript
运行
复制
public function getAuthPassword()
{
    return $this->password_value;
}

接下来我去了conf/auth.php

在这里,我指定了模型:

代码语言:javascript
运行
复制
   'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\UsersModel::class,
        ],

以及要使用的表格:

代码语言:javascript
运行
复制
/*
|--------------------------------------------------------------------------
| 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',

之后,我转到视图login.blade.php,,只更改了电子邮件输入(对于我在不同页面上读取的内容,更改密码输入将导致不同的问题,因为我需要做很多更改才能使其工作,所以最好的方法是用模型中指定的getAuthPassword,覆盖它):

新名称输入:

代码语言:javascript
运行
复制
x-input id="email" class="block mt-1 w-full" type="text" name="name_value" :value="old('name_value')" required autofocus />

在这之后,我去了LoginRequest (登录的验证),在那里我将电子邮件替换为name_value

我试着调试这个:

代码语言:javascript
运行
复制
dd(Auth::attempt($this->only('name_value', 'password'), $this->boolean('remember')));

并返回false

我注意到vendor/laravel/ui/auth-back/AuthenticatesUsers中有一个名为username()的函数,它返回“电子邮件”

当我看到我记得有一个页面说这个函数也可以覆盖,所以我把返回值更改为name_value,它什么也不做

最后,澄清一下,

我不需要注册站点,我只需要登录页面,因此在$fillable中,我没有添加数据库的所有列,只添加我需要登录的列(name_value,password_value)。

如果有人能帮助我并指导我,那将是很棒的,因为我已经没有想法了(我可以单独使用PHP,但是,我需要->middleware 'Auth,如果用户存在的话,有没有办法激活中间件?)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-13 09:54:04

我不认为编辑供应商文件是很好的做法。我们不会把它们推到版本控制上,这样其他开发人员就不会有您的更改。另外,Laravel已经有了一种不用编辑供应商文件就可以重写用户名值的方法。

只需像这样使用您的auth控制器中的特性:

代码语言:javascript
运行
复制
public class MyLoginController {
   use AuthenticatesUsers; // or you can also use ThrottlesLogins trait

   // then override the username function here
   public function username() {
      return 'name_value';
   }
}

若要重写密码,可以在User模型上定义该密码:

代码语言:javascript
运行
复制
public function getPasswordAttribute() {
  return $this->attributes['password_value'];
}

public function getAuthPassword() {
  return $this->password_value;
}

我还没有对此进行测试,但根据文档,您应该这样做。还要确保阅读这个拉勒维尔博士

票数 0
EN

Stack Overflow用户

发布于 2022-11-14 15:43:38

所以您可能有一个名为users_data.php的模型。进去,把代码修改成类似的东西。

步骤:1

代码语言:javascript
运行
复制
<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\users_data as Authenticatable;  //Add this line for Auth.


class users_data extends Authenticatable   //Extends child from Authenticatable parent class obj.
{
    use HasFactory;
    protected $fillable = ['column1', 'column2', 'column3', .....];
}

步骤:2转到config/auth.php。你可能会在下面找到类似的东西。

代码语言:javascript
运行
复制
'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\Models\User::class,
        ],

        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

将“model”=> App\model\User::class改为“model”=> App\Models\users_data::class,这是将应用程序默认放置到User表中的主要角色。

步骤:3对User.php进行注释,这样以后的冲突就不会产生。现在,您的应用程序已被转移到所需的表中,并准备登录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72227104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档