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)
检查你的政策
我有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)