为什么要用 policy?

在删除用户地址、更新、编辑的时候判断这个地址是否属于当前用户,为什么要使用policy 这个类去定义判断,如果直接在删除、更新、编辑的时候直接去判断 $user_address->user_id == $request->user()->id 这样也能做到,我不明白的是用 policy 在哪方面有优势?

赤色圣战
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
leo
最佳答案
  1. 如果以后要调整相关权限逻辑,比如前台也有超级管理员,可以直接修改用户的收获地址,那这个时候 Policy 方案只需要修改一个地方,而你说的方案需要每个控制器都修改。
  2. Policy 可以统一报错信息,由 Laravel 框架抛出异常;而在每个控制器中判断则需要手动抛出异常。
6年前 评论
讨论数量: 3
leo
  1. 如果以后要调整相关权限逻辑,比如前台也有超级管理员,可以直接修改用户的收获地址,那这个时候 Policy 方案只需要修改一个地方,而你说的方案需要每个控制器都修改。
  2. Policy 可以统一报错信息,由 Laravel 框架抛出异常;而在每个控制器中判断则需要手动抛出异常。
6年前 评论
leo
  1. 如果以后要调整相关权限逻辑,比如前台也有超级管理员,可以直接修改用户的收获地址,那这个时候 Policy 方案只需要修改一个地方,而你说的方案需要每个控制器都修改。
  2. Policy 可以统一报错信息,由 Laravel 框架抛出异常;而在每个控制器中判断则需要手动抛出异常。
6年前 评论

@leo 确实,定义在policy里在权限判断方面有优势,本来我还想定义在模型里能不能做到一样的效果

6年前 评论
running8

原来如此。学习的时候是感觉多了一层,但理解掌握了,习惯了,会给我们开发带来很大帮助。看来习惯就好了。

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!