今天我正在创建 USER 个人资料页面,其中控制ProfileController将视图返回到个人资料页面、个人资料设置等。所以我决定制定一些政策规则来编辑个人资料等。所以我发现我应该使用基于 Laravel Doc 的中间件 / Gates / Policy 我选择 Policy 因为 profil 页面是公开的但只有它的特定部分可以作者编辑所以我需要@can所以我的步骤:php artisan make:policy ProfilePolicy (无型号)注册政策,AuthServiceProvider在$policies财产写的方法像edit里面ProfilePolicy然后我开始思考如何将它定义给我的控制器嗯,文档对我没有帮助:/所以我尝试了刀片@can('edit', $user)方法并且它起作用了,但是如何?,如何为一个控制器定义特定策略?(不是 Model ),如何为单个 Controller 定义多个 Policy我失去了 laravel Magic 是如何做到这一点的,也许是因为命名?ProfileController => ProfilePolicy ?
1 回答

慕莱坞森
TA贡献1810条经验 获得超4个赞
在控制器中你可以写这个
public function edit(Profile $profile) {
$this->authorize('edit', $profile)
}
Laravel 这样做:
检查 的类型
$profile
,它是一个Profile::class
检查为该类注册的策略(您的第 2 步)
查找该
edit
策略中的方法,如果未找到,则返回 false 表示用户未被授权执行
edit()
返回真/假的函数
在blade中,@can
指令做的事情完全一样。
策略旨在绑定到模型,这是编写处理单个模型的规则的便捷方式,但它们可以通过多种方式触发(例如authorize()
控制器中的方法和@can
刀片中的指令)。
- 1 回答
- 0 关注
- 136 浏览
添加回答
举报
0/150
提交
取消