起因
在项目中,对数据的权限处理分为两类,全部数据与用户数据
例如用户1的计划和全部用户的计划
解决方案
假设计划接口为/plans
全部用户计划的查询很容易,/plan [GET]即可
在考虑用户1的计划查询接口时,有三种策略:
- /plans [GET], 查询条件中增加userId
- /plans/user/{userId} [GET]
- /user/plans [GET]
第一种存在非常严重的安全问题,userId为客户端提交的,客户端实际为用户1登录,却提交用户2的id,虽然可以用代码在后台控制,但笔者很懒,不愿意这么做
第二种首先路径不符合规范,其次也存在第一种的安全问题
第三种是笔者心中最佳的解决方案