【问题标题】:Laravel Bouncer Package sample code does not workLaravel Bouncer 包示例代码不起作用
【发布时间】:2020-04-12 23:48:34
【问题描述】:

我正在使用 Laravel 5.8、PHP 7.3.3。安装 JosephSilber/bouncer 包来管理角色、权限等。

我试过这个,从样品开始,没什么特别的:

Bouncer::allow('superuser')->to('create-account'); //works, creates role 'superuser', creates ability 'create-account'
Bouncer::allow('employer')->to('create-employee'); //works
$john = App\User::where('email','john@gmail.com')->first(); //works, finds John
$john->assign('superuser');  //works, John is now a user user
$john->can('create-account'); // works, returns true
$john->can('create-employee'); // works, returns false


$boolean = $john->isAn('superuser') ; 

ERROR=> array_key_exists(): 第一个参数应该是字符串或整数

不知道为什么我会收到此错误。

的类似问题
User::whereIs('superuser')->get() etc

我尝试调试,问题似乎是在 BaseClipboard.php 中调用以下行时出现的。它正在这个调用中发生,到此我可以验证传入的参数。

$authority->roles()->get([
            'name', Models::role()->getQualifiedKeyName()
        ]) 

但是我无法克服这一点。感谢任何帮助。

无法弄清楚如何获得堆栈跟踪的干净转储。但这里是复制和粘贴。我认为只有最后几个会引起人们的兴趣

错误异常

…\vendor\laravel\framework\src\Illuminate\Support\Collection.php2029

51

array_key_exists

…\vendor\laravel\framework\src\Illuminate\Support\Collection.php2029

50

Illuminate\Support\Collection offsetExists

…\vendor\laravel\framework\src\Illuminate\Support\Collection.php876

49

Illuminate\Support\Collection 获取

…\vendor\silber\bouncer\src\BaseClipboard.php82

48

Silber\Bouncer\BaseClipboard getRolesLookup

...\vendor\silber\bouncer\src\CachedClipboard.php234

47

Silber\Bouncer\CachedClipboard Silber\Bouncer{关闭}

…\vendor\silber\bouncer\src\CachedClipboard.php248

46

Silber\Bouncer\CachedClipboard 搜索

…\vendor\silber\bouncer\src\CachedClipboard.php235

45

Silber\Bouncer\CachedClipboard getRolesLookup

…\vendor\silber\bouncer\src\BaseClipboard.php57

44

Silber\Bouncer\BaseClipboard countMatchingRoles

…\vendor\silber\bouncer\src\BaseClipboard.php37

43

Silber\Bouncer\BaseClipboard checkRole

…\vendor\silber\bouncer\src\Database\Concerns\HasRoles.php92

42

应用\用户是An

…\routes\web.php379

41

App\Providers\RouteServiceProvider {关闭}

…\vendor\laravel\framework\src\Illuminate\Routing\Route.php205

【问题讨论】:

  • 你能发布完整的堆栈跟踪吗?
  • 我已经编辑了我的 OP 并添加了堆栈跟踪。完整的堆栈跟踪超过 300 行。只是想我会为你缩小范围。
  • 解决了吗??
  • 没有。我停止调用该函数并解决它。

标签: php laravel package


【解决方案1】:

create-employee”权限分配给“employer”,而不是“superuser”角色,试试这个方法:

Bouncer::allow('superuser')->to('create-account');
Bouncer::allow('superuser')->to('create-employee');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    相关资源
    最近更新 更多