【问题标题】:There is no role named `admin`. laravel没有名为“admin”的角色。拉拉维尔
【发布时间】:2020-06-27 19:45:47
【问题描述】:

我用这个包:

https://github.com/spatie/laravel-permission/tree/v2

代码:

     $user=User::find(2);
    $user->assignRole('admin');

当我将管理员角色分配给用户时,我正在处理此错误

没有名为admin.Spatie\Permission\Exceptions\RoleDoesNotExist 的角色

这是我在 auth.php 中的默认守卫:

    <?php

return [

    'defaults' => [
        'guard' => 'api',
        'passwords' => 'users',
    ],


    'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],
    ],

这是我的角色表:

这是我的 role_has_permission 表

这是我的权限表:

【问题讨论】:

  • @kerbholz 请再次查看我的帖子,谢谢

标签: laravel laravel-permission


【解决方案1】:

只需将此受保护的属性添加到您的用户模型(或您用于分配权限和角色的任何模型)。

protected $guard_name = 'api';

【讨论】:

【解决方案2】:

将此添加到您的用户模型中

use Spatie\Permission\Traits\HasRoles;

在用户模型类中

use HasRoles;

这是reference

Complete example

【讨论】:

  • 如果不使用您指定的特征,您将无法得到所描述的错误,因此您没有回答问题
【解决方案3】:

将以下内容之一添加到您的 User 模型中:

public $guard_name = 'api';

或者:

public function guardName()
{
  return 'api';
}

【讨论】:

    【解决方案4】:

    按照惯例,最好在配置文件中进行可配置的操作。
    您的代码的问题是安排守卫的顺序,只需重新安排,如下所示。

    <?php
    
    return [
    
        'defaults' => [
            'guard' => 'api',
            'passwords' => 'users',
        ],
    
    
        'guards' => [
            'api' => [
                'driver' => 'token',
                'provider' => 'users',
                'hash' => false,
            ],
            'web' => [
                'driver' => 'session',
                'provider' => 'users',
            ],
        ],
     ...
    

    完成此操作后,您无需将protected $guard_name = 'api'; 添加到您的用户 模型中,确保运行php artisan config:clear

    参考:Saptie Laravel Permisions

    【讨论】:

      猜你喜欢
      • 2020-12-16
      • 2018-09-14
      • 2021-10-05
      • 2021-08-23
      • 2015-05-02
      • 1970-01-01
      • 1970-01-01
      • 2018-09-11
      • 2017-07-04
      相关资源
      最近更新 更多