Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel策略始终拒绝访问_Php_Laravel_Policies - Fatal编程技术网

Php Laravel策略始终拒绝访问

Php Laravel策略始终拒绝访问,php,laravel,policies,Php,Laravel,Policies,我注册了保险单 protected $policies = [ 'App\Grade' => 'App\Policies\GradesPolicy' ]; 这是我获取此资源的路线: Route::get('/grades', 'GradesController@showGrades'); 控制方法 public function showGrades() { $this->authorize('viewAny');

我注册了保险单

protected $policies = [
         'App\Grade' => 'App\Policies\GradesPolicy'

    ];
这是我获取此资源的路线:

Route::get('/grades', 'GradesController@showGrades');
控制方法

public function showGrades()
    {

        $this->authorize('viewAny');

        switch(Auth::user()->role)
        {
            case 'teacher':
               return view('teacher');
            break;

            case 'parent':
              return view('parent');
            break;

            default:
             abort(400);
            break;
        }
    }
政策方法

public function viewAny(User $user)
    {

         return $user->check();
    }

是的,我知道这里有相关的话题。我读了。我知道这是与模型绑定有关的。从未调用viewAny方法。我在里面用了dd,它什么也没显示。但我该如何在这里绑定模型呢?有什么想法吗?

调用操作“viewAny”时,您没有为authorize方法指定相关模型,因此您需要做的是:

$this->authorize('viewAny',Grade::class);
或者直接将其添加到中间件并从控制器中删除授权调用

Route::get('/grades','GradesController@showGrades')
->中间件('can:viewAny,App\Grade');

您是否尝试过使用
$this->authorize('viewAny',Grade::class')?因为我认为你必须指定一个模型,让laravel检索相关的policyman。我看了laracast教程,但没有看到这种方法。我没有在其他相关主题中看到它。谢谢。不幸的是,我没有在laracasts教程中找到它/你可以阅读更多关于这方面的文章。它基本上说,您必须提供一个模型实例或模型类来检索要运行的正确策略