0

我有这样的update方法

  public function update(Contact  $contact)
{

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

ContactPolicy

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

它工作正常,但是当我在我的方法中替换为时Contcact向我显示:ContactRequestupdate

403 此操作未经授权。

update方法 :

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

authorizeContactRequest 中的方法:

public function authorize()
{
    return true;
}
4

2 回答 2

2

ContactRequest是一个 laravelRequest类实例


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

于 2020-01-02T08:39:58.023 回答
1

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

UPD

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

于 2020-01-02T08:54:27.650 回答