destroy 方法里的 授权策略 是不是多余的?
我们在视图里使用了 Blade 命令 @can('delete', $user)
。
而 UserPolicy
策略里的 destroy()
方法已经做出了判断:
public function destroy(User $currentUser, User $user)
{
return $currentUser->is_admin && $currentUser->id !== $user->id;
}
这里的 $currentUser->is_admin
不就已经可以让普通用户不显示删除按钮了吗?
想问的问题是:
UsersController
里的destroy()
方法里的$this->authorize()
是不是不加也可以?- 如果加,有什么充分的理由吗?
- 如果不加,会有什么影响吗?
- 最佳实践是哪种呢?
其实我觉得加了更安全,不过一方面是用更少的代码达到相同的效果,一方面是看起来更安全的可能是画蛇添足,取舍不下。
推荐文章: