Laravel 使用门面时禁止使用403

Laravel 使用门面时禁止使用403,laravel,laravel-facade,Laravel,Laravel Facade,写入用户权限时显示错误:403禁止 控制器代码 class IndexController extends AdminController { public function __construct(){ parent::__construct(); if (Gate::denies('VIEW_ADMIN')) { abort(403); } $this->template = env(

写入用户权限时显示错误:
403禁止

控制器代码

class IndexController extends AdminController
{
    public function __construct(){

        parent::__construct();

        if (Gate::denies('VIEW_ADMIN')) {
            abort(403);
        }

        $this->template = env('THEME').'.admin.index';
 }
AuthServiceProvider代码

public function boot()
{
    $this->registerPolicies();

   Gate::define('VIEW_ADMIN', function($user){
        return $user->canDo('VIEW_ADMIN');
    });

    //
}
模型用户代码

用户
模型与
角色
模型相关联,
角色
模型与
权限
模型相关联

public function canDo($permission, $require = FALSE){

    if (is_array($permission)) {
        dump($permission);
    }
    else{
        foreach ($this->roles as $role) {
           foreach ($this->permissions as $permission) {
               if (str_is($permission,$permission->name)) {
                   return true;
               }
           }
        }
    }        
}

您的
Gate
定义和注册似乎没有问题,我怀疑错误在于您的
canDo
功能

忽略
if(is_array($permission))
检查:

// does the user have any roles?
foreach ($this->roles as $role) {
    foreach ($this->permissions as $permission) {
        // what is str_is? It's not a PHP function
        if (str_is($permission, $permission->name)) { 
            return true;
        }
    }
}
检查
用户
是否有任何
角色
,如果没有,则
canDo
将返回空,并被视为
false

不确定stru是什么?这不是一个PHP函数,你是说类似的还是可能的

我怀疑没有角色,否则您不会得到
403
,相反,您可能会得到对未定义函数str_is()的
调用