许可权限包Laravel 5.6中的PermissionDoesNotExist(ID为1的用户没有权限)

时间:2018-11-21 12:03:17

标签: permissions laravel-5.6 spatie

我正在使用spatie许可包。我想向角色分配许可。下面是我在控制器中的方法:

 public function testing_role_permission()
{
  $role = Role::findById(2);
  $permission = Permission::findById(1);
  $role->givePermissionTo($permission);

}

它向我显示异常 PermissionDoesNotExist 没有ID为1 的[permission]。

在此之前,相同的方法已经起作用,并且为角色分配了权限。但是我在PermissionTableSeeder中创建了一些新的权限。这样做之后,它不起作用了。我进行了大量搜索以尝试清除缓存,但此异常没有任何反应。< / p>

PermissionTableSeeder.php

use Illuminate\Database\Seeder;
use Spatie\Permission\Models\Role;
use Spatie\Permission\Models\Permission;
class PermissionTableSeeder extends Seeder
{
/**
 * Run the database seeds.
 *
 * @return void
 */
public function run()
{

    app()[\Spatie\Permission\PermissionRegistrar::class]- 
    >forgetCachedPermissions();
    //role permissions
     Permission::create(['name' => 'create_role']);
     Permission::create(['name' => 'read_role']);
     Permission::create(['name' => 'update_role']);
     Permission::create(['name' => 'delete_role']);
     Permission::create(['name' => 'disable_role']);
     Permission::create(['name' => 'isolation_role']);
    }
    }

如何解决此错误?

谢谢!

1 个答案:

答案 0 :(得分:0)

在您的权限表中,检查您的guard_name。如果它为空或不匹配,则可能是您收到了该错误。