权限问题

2020-04-27 09:43:54 +08:00
 wangxiaoaer

假如有一个应用,涉及到部门、人员等实体,部门是树状的,人员归属于部门。

部门经理可以查看自己部门(包括下属部门)的所有用户,那么在提供用户查询这个 api 的时候有两种方式:

1 /api/user

不带参数,后台自动根据当前登陆角色查询出有权限查看的用户,比如系统管理员返回所有,部门经理返回当前部门人员,相当于根据身份在进行 sql 查询的时候增加额外的过滤语句。

2 /api/user?department=xxx

需要前端显式提供部门 id 之类,后台对当前登陆角色的部门跟查询部门进行校验,然后根据提供的部门 id 去查询。

那种更优呢?

另外,顺便问一下:

3 管理员这种角色是分配到根部门还是设置为 null ?

829 次点击
所在节点    问与答
2 条回复
bnm965321
2020-04-27 09:48:46 +08:00
1 好一点,2 的话首先需要用户知道自己是哪个 /哪几个部门,然后如果 department id 不对应,后端也应该返回 403,绕了好大一个弯。

API 的幂等性,指的是相同的输入得到相同的输出。我觉得不同类型的用户也应该算作是不同的输入。
kaneg
2020-04-27 09:56:37 +08:00
我觉得 1 和 2 不冲突。查询的最终结果是由权限和查询条件共同作用生成的。1 和 2 只是查询过滤条件不同。1 )代表在自己权限范围内查看自己能看得所有用户,2 )代表在权限范围内查看指定的部门,但很有可能这个部门的人自己一个都没权限看。

至于权限和过滤条件如何在实现层面共同起作用,就要看你用的是什么样的权限框架,比如 RBAC 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/666481

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX