【问题标题】:Laravel 5 with entrust - hasRole not workingLaravel 5 与委托 - hasRole 不起作用
【发布时间】:2015-05-10 03:54:58
【问题描述】:

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

@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 不起作用。我现在只是在刀片模板中测试它,但在控制器中尝试了它,结果相同。我的错误是:

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'];

}

更新

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

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

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

$user = \Auth::user();

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

【问题讨论】:

  • 你能告诉我们你的用户模型吗?我猜您可能忘记在其中使用EntrustUserTrait
  • 好的,我加到原帖里了
  • 你抛弃了作曲家自动加载吗? composer dump-autoload
  • 是 - 转储作曲家自动加载 - 没有成功。

标签: authentication laravel laravel-5


【解决方案1】:

感谢您的更新,这对我来说也是个问题。我听从了你的建议,我把我的 HomeController 放进了我的 HomeController

public function index()
{
    $user = User::find( \Auth::user()->id );

    return view('home', compact('user'));
}

然后在我的主页视图中

@if ($user->hasRole('Admin'))
    <li><a href="/users/create">Create User</a></li>
@endif
<li><a href="/users">User List</a></li>
<li><a href="">Create Client</a></li>
<li><a href="">Create Payment</a></li>

一切都很完美......

【讨论】:

    【解决方案2】:

    发现问题..

    在 config/auth.php 我有

    'model' => 'App\User',
    

    我的命名空间需要

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

    【讨论】:

    • 谢谢,你节省了我的时间
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多