Laravel 5.8 403 Это действие неавторизовано

У меня есть update метод вроде этого

  public function update(Contact  $contact)
{

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

а также ContactPolicy:

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

Он работает правильно, но когда я заменяю Contcact к ContactRequest в моем update метод покажите мне это:

403 Это действие является несанкционированным.

update метод:

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

authorize в ContactRequest:

public function authorize()
{
    return true;
}

2 ответа

Решение

ContactRequest это ларавел Request экземпляр класса


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)

Другие вопросы по тегам