Laravel 策略始终拒绝访问
Laravel policy always denies access
我注册了保单
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,但它什么也没显示。但是我应该如何在这里绑定模型呢?有什么想法吗?
你在调用action时没有指定相关模型给authorize方法"viewAny",所以你需要做的是:
$this->authorize('viewAny',Grade::class);
或者直接将其添加到中间件并从您的控制器中删除授权调用
Route::get('/grades','GradesController@showGrades')
->middleware('can:viewAny,App\Grade');
我注册了保单
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,但它什么也没显示。但是我应该如何在这里绑定模型呢?有什么想法吗?
你在调用action时没有指定相关模型给authorize方法"viewAny",所以你需要做的是:
$this->authorize('viewAny',Grade::class);
或者直接将其添加到中间件并从您的控制器中删除授权调用
Route::get('/grades','GradesController@showGrades')
->middleware('can:viewAny,App\Grade');