gpt4 book ai didi

authentication - 具有委托(delegate)的 Laravel 5 - hasRole 不工作

转载 作者:行者123 更新时间:2023-12-04 06:46:28 25 4
gpt4 key购买 nike

我有一个登录用户,这里的代码有效:

@if( Auth::check() )
Logged in as: {{ Auth::user()->firstname }} {{ Auth::user()->lastname }}
@endif

我正在使用 zizaco/entrust,一切正常。我已经创建了角色和权限,并为我的用户授予了具有管理权限的管理员角色。

那么为什么这不起作用:

$user = Auth::user();
print_r($user->hasRole('admin'));

如果我 print_r $user 我可以看到 Auth 用户已加载,但 hasRole 不工作。我当时只是在 Blade 模板中对此进行了测试,但在 Controller 中进行了尝试,结果相同。我的错误是:

BadMethodCallException in Builder.php line 1992:
Call to undefined method Illuminate\Database\Query\Builder::hasRole()

我的用户模型:

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Zizaco\Entrust\Traits\EntrustUserTrait;

class User extends Model {
use EntrustUserTrait;

protected $table = 'users';
public $timestamps = true;

use SoftDeletes;

protected $dates = ['deleted_at'];

}

更新

当我以这种方式查找用户(返回 App\Models\User 对象)时,我意识到 hasRole 对我有用:

$user = \App\Models\User::find( \Auth::user()->id );

但不是当我以这种方式找到用户时(返回 App\User Object ):

$user = \Auth::user();

我宁愿认为它会以另一种方式工作,当我拉出 App\User 时我可以访问 hasRole 但在我搜索用户时不一定。我认为 hasRole 可以直接从 Auth::user() 开始工作,而不必使用用户模型查找用户...???

最佳答案

发现问题..

在 config/auth.php 中我有

'model' => 'App\User',

我的命名空间需要

'model' => 'App\Models\User',

关于authentication - 具有委托(delegate)的 Laravel 5 - hasRole 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28934449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com