【问题标题】:How can I use another table for authentication in Laravel 7如何在 Laravel 7 中使用另一个表进行身份验证
【发布时间】:2020-08-01 23:02:33
【问题描述】:

我是 Laravel 的新手,已经看过很多教程,所以现在我知道的很少。但我正在努力解决一个我无法解决的问题。我想使用我的数据库中已经存在的另一个表(t_clients)而不是通过迁移生成的用户表进行身份验证。我已经阅读了网站上的文档,所以我在 auth.php 中进行了更改:

    'providers' => [
//        'users' => [
//            'driver' => 'eloquent',
//            'model' => App\User::class,
//        ],
         'users' => [
             'driver' => 'database',
             'table' => 't_clients',
         ],
    ],

现在,当我尝试登录时,出现下一个错误:ErrorException Undefined index: id。所以我尝试了下一个,这个问题是临时解决的,我将表“t_clients”中的primary_key名称更改为“id”并且登录有效。原始列名是“pk_client”。但我实际上希望 primary_key 保持不变。我实际上希望通过身份验证,Laravel 搜索“pk_client”而不是“id”。有谁知道我该如何解决这个问题?我感谢您的帮助。

规范项目: Laravel 框架 7.1.0 mysql 版本 8.0.18

【问题讨论】:

    标签: authentication laravel-7


    【解决方案1】:

    这个问题已通过制作客户端 EloquentModel 并添加下一行来解决:

    protected $table = 't_clients';
    protected $primaryKey = 'pk_client';
    

    所以结果应该是:

    class Client extends Authenticatable implements CanResetPassword
    {
        protected $table = 't_clients';
        protected $primaryKey = 'pk_client';
        use Notifiable;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-30
      • 2018-08-01
      • 2021-02-08
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 1970-01-01
      • 2022-11-14
      相关资源
      最近更新 更多