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教程中找到它/你可以阅读更多关于这方面的文章。它基本上说,您必须提供一个模型实例或模型类来检索要运行的正确策略