簡體   English   中英

Laravel 5.5權限-用戶沒有正確的角色

[英]Laravel 5.5 Permissions - User does not have the right roles

我正在嘗試在管理員用戶沒有分配角色的用例中找到解決方案。 在儀表板視圖中,它不會為用戶呈現url,而如果直接訪問儀表板/用戶,則會得到:

Spatie \\ Permission \\ Exceptions \\ UnauthorizedException user does not have the right roles

app / Http / Kernel.php

    protected $routeMiddleware = [
     ....
    'role' => \Spatie\Permission\Middlewares\RoleMiddleware::class,
    'permission' => \Spatie\Permission\Middlewares\PermissionMiddleware::class,
];

路線/web.php

Route::group(
   ['middleware' => ['role:admin']],
    function () {
      Route::get('/dashboard/users', 'UsersController@index');
      Route::get('/dashboard/users/{id}', 'UsersController@edit');
      Route::patch('/dashboard/users/{id}', 'UsersController@update');
   }
);

查看/dashboard.blade.php

<div class="panel-body">
  @hasrole('admin')
     <li><a href="/dashboard/users">Manage Users</a></li>
  @endhasrole
</div>

我已經成功生成了默認角色和權限

命令/GenerateRoles.php

    public function handle()
    {
    $this->info('Generating default roles and permissions...');
    $admin = User::create(
      [
        'name'     => 'administrator',
        'email'    => 'adm@mail.com',
        'password' => bcrypt('12345'),
      ]
    );

    // Create roles.
    $adminRole   = Role::create(['name' => 'admin']);
    $supportRole = Role::create(['name' => 'support']);

    $admin->assignRole('admin');

    // Create permissions.
    $userManagement = Permission::create(['name' => 'users management']);
    $deleteImages  = Permission::create(['name' => 'delete images']);
    $datasetStatus   = Permission::create(
      ['name' => 'change dataset building status']
    );

    $adminRole->givePermissionTo($userManagement);
    $deleteImages->syncRoles([$adminRole, $supportRole]);
    $datasetStatus->syncRoles([$adminRole, $supportRole]);
   }

它可能會出錯嗎? 謝謝您的時間。

您應該覆蓋render方法進行重定向(或執行任何操作)。 轉到Expectations / Handler.php並覆蓋渲染函數,如下所示:

public function render($request, Exception $exception)
{
    if ($exception instanceof \Spatie\Permission\Exceptions\UnauthorizedException) {
          return redirect('/');
    }

    return parent::render($request, $exception);
}

來源: https : //github.com/spatie/laravel-permission#catching-role-and-permission-failures

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM