Laravel 5.8 403 此操作未经授权

Laravel 5.8 403 This action is unauthorized

我有update这样的方法

  public function update(Contact  $contact)
{

    $this->authorize('ownItems', $contact);
    ......
}

ContactPolicy

public function ownItem(User $user,Contact $contact)
{
  return true;
} 

它工作正常,但是当我在 update 方法中将 Contcact 替换为 ContactRequest 时 给我看这个:

403 This action is unauthorized.

update方法:

public function update(ContactRequest  $contact)
{
    $this->authorize('ownItems', $contact);
    .......
}

authorize ContactRequest 中的方法:

public function authorize()
{
    return true;
}

ContactRequest 是一个 laravel Request class 实例


public function update(ContactRequest $request,Contact  $contact)
{
    $this->authorize('ownItems', $contact);
    .......
}

您在 $this->authorize('ownItems', $contact); 中拼错了方法名称,它应该是“ownItem”

UPD

ContactRequest 可能是 Illuminate\Http\Request 的实例,但是 authorize 方法等待 Model 实例,如果您的请求中没有模型标识符。首先你应该找到型号:$model = Contact::find($contact->input('id')) 然后用 $this->authorize('ownItems', $model)

检查你的政策