为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 策略不会自动应用于模型

Laravel 策略不会自动应用于模型

PHP
慕容3067478 2023-04-21 15:51:52
根据 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();

}


查看完整回答
反对 回复 2023-04-21
  • 1 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信