根据 Laravel 文档,如果遵循命名约定,策略应该被自动发现:它应该放在目录中Policies,它的名称应该是模型名称加上单词Policy,模型应该在app目录中。就我而言,这一切都是正确的,但该政策不起作用。型号名称是Screen。该政策被命名为ScreenPolicy:class ScreenPolicy{ use HandlesAuthorization; /** * Create a new policy instance. * * @return void */ public function __construct() { // } public function delete(User $user, Screen $screen) { return false; //always return false for testing }}在我的控制器中,我有以下删除 a 的方法Screen:public function delete(Request $request) { $screen = Screen::find($request->screen_id); $screen->delete(); ...}我的期望是我不应该能够删除此处Screen,因为该策略始终返回 false,但是Screen通过调用此方法已成功删除。我究竟做错了什么?
1 回答
月关宝盒
TA贡献1772条经验 获得超5个赞
您仍然需要调用 authorize()。
$screen = Screen::find($id);
if ($this->authorize('delete', $screen)) {
$screen->delete();
}
- 1 回答
- 0 关注
- 106 浏览
添加回答
举报
0/150
提交
取消