我可以更改在 laravel 的身份验证系统中使用的模型用户吗?

Posted

技术标签:

【中文标题】我可以更改在 laravel 的身份验证系统中使用的模型用户吗?【英文标题】:Can I change Model User that used in auth system in laravel? 【发布时间】:2020-07-03 14:15:43 【问题描述】:

我尝试更改使用命令 php artisan ui:auth 时默认使用的用户模型 到另一个模型 但是所有的方法都行不通 应该怎么做? 我正在使用 laravel 7.x 版

【问题讨论】:

【参考方案1】:

出于各种原因,您可以根据需要拥有不同(或尽可能多的不同)模型。您只需要更改config/auth.php 中的相关部分。我总是使用 Models 目录,所以我对新应用做的第一件事就是重新定位 User 模型,然后告诉 Auth 在哪里寻找它:

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

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

如果您有自定义逻辑,您还必须在控制器中更新模型的 use 语句,但对于普通 Laravel Auth 设置,您只需更改配置即可。

编辑:如果您确实有像我这样的结构(模型目录),则默认 App\User 命名空间声明必须在模型本身上进行更改:

变化:

namespace App;

收件人:

namespace App\Models;

或者任何与你的结构相匹配的东西。

【讨论】:

我使用 vue auth 设置而不是 vanilla 我这样做但它不起作用 @AddyDeveloper,确保命名空间匹配。默认为App\User;如果你在模型中有它,那么模型的命名空间必须更改为App\Models\User,等等。如果你使用 JWT 或其他东西,它会有点取决于你的身份验证工作流程是什么样的,但最后最重要的是,它仍然归结为确保工作流在正确的位置/命名空间中寻找模型。 @AddyDeveloper,我编辑添加了一个示例,说明模型本身需要更改的内容,如果您需要这样做,那么您的命名空间声明是正确的。

以上是关于我可以更改在 laravel 的身份验证系统中使用的模型用户吗?的主要内容,如果未能解决你的问题,请参考以下文章

使用身份验证护照系统覆盖 laravel 中 apis url 的身份验证重定向

Laravel 5.2 - 经过身份验证的用户更改密码 - 更新后的密码匹配问题

Laravel - 更改身份验证用户的错误消息

使用用户名的 Laravel 身份验证不区分大小写

Laravel 5.2 更改用户密码功能

如果在 Laravel 5.3 中通过身份验证,则重定向