对于 web 开发的权限管理

2018-07-12 12:36:08 +08:00
 Mrkon
楼主目前使用的是 python falsk 做后端开发,使用了 RBAC 架构作为权限管理。

但是我有以下疑问:
1.在查找该用户是否具有权限的时候,采用的方式是:查找用户角色 -> 用户角色对应的权限表 -> 查找该用户是否具备此权限 这样设计合理吗?
2.如果我要限制用户可以查看多少页的数据(如分为 50 页,100 页),在权限表中是应该设置一个具体的数字,还是直接设定不可更改的一个权限标示就足够
3.对于像腾讯云这样的网站,所用的定制权限(如使用的机器内存大小,这个难道是购买之后就直接固定了吗?),如果我想通过购买来确定权限,应该如何做

能给个合理建议吗?谢谢
3271 次点击
所在节点    Python
11 条回复
BBCCBB
2018-07-12 12:45:10 +08:00
基于资源的权限控制更加灵活.
Mrkon
2018-07-12 12:53:26 +08:00
@BBCCBB 谢谢,有教程或者开源项目作为参考吗?
joyme
2018-07-12 16:46:12 +08:00
基于资源的权限控制和基于角色的权限控制的主要区别在于:是否显式的表达出某个角色对于某个资源有某个操作的权限。优点体现在需求变更时的需要改动的代码更少

这是我的一点总结: https://www.myway5.com/index.php/2018/03/29/%E7%B3%BB%E7%BB%9F%E6%9D%83%E9%99%90%E8%AE%BE%E8%AE%A1%E4%B8%ADrbac%E6%A8%A1%E5%9E%8B%E7%9A%84%E4%BD%BF%E7%94%A8/
wyds591101
2018-07-12 16:56:29 +08:00
我觉得 rbac 挺好的。
Mrkon
2018-07-12 17:23:10 +08:00
@joyme 谢谢,但是对于一个网站的权限(例如可查的页数)我在权限表里面应该插入不同的行吗?在这行中我是应该明确的表示 1000 页和用户查看的页数进行大小比较,还是只是一个权限设定(如有这个权限才能看 1000 页以上,如果是这样的话,对于比 1000 页小的权限限制(如 100 页),那就需要将两个权限都加入权限池,这样做是否优雅)
xkeyideal
2018-07-12 17:40:44 +08:00
rbac 在很多场景下就是个鸡肋,不能彻底解决较为复杂的权限问题,比如同一个资源,A 能 CURD,B 仅能 CU 的场景
joyme
2018-07-12 17:43:42 +08:00
我个人是觉得“应该明确的表示 1000 页和用户查看的页数进行大小比较”这种方案会比较好,因为在这个限定发生改变时,代码改动最小
wlbcs
2018-07-12 22:45:04 +08:00
将 50 页,100 页存为 2 条权限,然后在用户请求的时候检查一下就行了
wlbcs
2018-07-12 22:48:04 +08:00
用户和权限之间还可以再加一个用户组,默认用户组有默认权限这样
Mrkon
2018-07-13 09:12:06 +08:00
@wlbcs 其实这也在我的疑问中。因为我是加了用户组的(如超级管理员等),但是根据一些不错的博客(如 @joyme ),最后还是通过 直接查找是否拥有这项权限 来确定是否返回数据。当然,我认为加了用户组之后管理权限要方便的多,直接赋予角色就行
dilu
2018-07-13 10:15:46 +08:00
auth 授权了解一下 RBAC 都是很老的产物了
如果我要一级管理员显示某个按钮 二级管理员不显示 RBAC 就做不到了

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

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

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

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

© 2021 V2EX