无法使用基于角色的中间件限制对权限管理器路由的访问

时间:2019-04-03 07:55:33

标签: backpack-for-laravel laravel-permission

PHP 7.3 Laravel 5.8 Laravel背包3.6

我正在尝试使用'role:admin'文件中的中间件routes/backpack/permissionmanager.php,将对Backpack的“用户”,“角色”和“权限”区域的访问权限限制为具有特定角色的一部分用户。

我已经确保我的用户帐户已被授予正确的角色。

我在'user'中的config/backpack/permissionmanager.php模型设置为App\User::class,而我的User模型具有并使用了文档中概述的必要特征。

我已将role中间件放入我的应用程序,如下所示:

<?php

namespace App\Http\Middleware;

use Closure;

class RoleMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next, $role)
    {
        if (backpack_auth()->guest()) {
            return redirect('login');
        }

        if (! backpack_user()->hasRole($role)) {
            abort(403);
        }

        return $next($request);
    }
}

但是,似乎这个中间件的backpack_user()通过正确返回->name属性知道我是谁,却绝对不知道我应该分配的角色或权限给我自己。我已经使用->getRoleNames()方法进行了检查,它返回了一个空集合。

在数据库中,model_has_roles表中为我的用户帐户和所需角色设置了正确的条目和ID。

但是,导航到myapp.dev/admin/user会得到403 Forbidden

我认为这可能是一个错误,或者我一定看不到正确的东西...?

0 个答案:

没有答案