我正在尝试使用标准的 Laravelauth
相关功能。我有标准的登录、注册、注销等......作业正常。但我的问题是,每当我使用这样的函式时,都会Auth::user()
回传GenericUser
模型而不是我自己的App/Models/User.php
模型。问题是我的用户模型对其他资料有一些外键参考,所以我想专门使用我的User
模型。
例如,当Policy
我尝试做一个时,我遇到了一个错误:
代码看起来像这样:
<?php
namespace App\Policies;
use App\Models\Contract;
use App\Models\User;
use Illuminate\Auth\Access\HandlesAuthorization;
class ContractPolicy
{
use HandlesAuthorization;
public function before(User $user, $ability)
{
if ($user->isSuperAdmin()) {
return true;
}
}
public function viewAny(User $user)
{
return $user->isMember();
}
}
该GenericUser
模型确实从users
表中回传资料,但问题是它与我的User
模型给出的完全不同,因此不包括我添加的外键参考或函式。我的印象是我可以通过切换config/auth.php
提供者来切换使用的模型。我做了什么,似乎没有任何改变:
'providers' => [
'users' => [
'model' => App\Models\User::class,
],
'users' => [
'driver' => 'database',
'table' => 'users',
],
],
我在这里做错了什么?
uj5u.com热心网友回复:
您正在定义users
提供程序以使用“数据库”驱动程序:
'users' => [
'driver' => 'database',
'table' => 'users',
],
调整它以使用“雄辩”的驱动程序:
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
'database' 驱动程序使用 Query Builder 与数据库表进行互动并回传一个物件GenericUser
来表示当前经过身份验证的用户。
'eloquent' 驱动程序使用 Eloquent 模型与数据库互动并回传一个模型实体。如果你喜欢 Eloquent 的人际关系和所有其他特性,那么你应该坚持使用“eloquent”驱动程序。此外,您已将 Policy 方法定义为期望将特定模型传递给其方法。
0 评论