寻找适用于Python Web的RBAC模块

发布于 2022-09-01 15:23:06 字数 1800 浏览 19 评论 0

我在评估Cyclone,一种混合Tornado WebFrame和Twisted Framework的开源Web。该项目文档不太齐全,或者说大部分其实是Tornado的文档,好在参考Tornado API,理解没有特别的问题。

Cyclone/Tornado有了基本的框架,包括auth,DB,template,以及基本的安全设计,以及其他协议如email等。但是,web中缺乏一个基本的构建模块:RBAC。

我检索了一下Python相关的RBAC实现:

https://pypi.python.org/pypi?%3Aaction=search&term=RBAC&submit... (RBAC on Python.org)
http://stackoverflow.com/search?q=RBAC+python (RBAC Python on stackoverflow.com)
http://pydoc.net/Python/security-rbac/1.0/security.rbac.core.impl.rbac... (security.rbac.python)
https://github.com/comger/tor_access (tor.access, RBAC for Tornado, 中文)
https://github.com/kyleterry/simpleacl-py (simpleacl-py)
https://github.com/limscoder/Python-ACL/ (python-acl)
http://www.limscoder.com/2009/11/role-based-security-with-python.html (Python-acl)
http://web2py.com/books/default/chapter/29/09/access-control (web2py access control)

似乎Django, Flask,web2py采用专门的RBAC,那个simple-rbac似乎年久失修。Twisted有一个LDAP模块,还需要专门的LDAP服务器。PHP框架Yii/ThinkPHP/CodeIgniter基本上都有自己的RBAC实现。

想问问大家都是如何实现这部分模块的?除了上面列出的模块,是否还有通用性较强的RBAC模块可以用于web?如果轮子找不到,只有自己重新造轮子了。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

南城旧梦 2022-09-08 15:23:06

等了很久没有人回答。还在让人失望。

我参考了Grinberg的Flask Web Development的设计。设计思路是:

为User表格增加Role,并作为外键;
添加Role表格,其中permission一栏中以二进制表达细颗粒的权限,比如某个编辑文章,删除文章等。
在Controller入口处判断,读取用户的Role表,再读取permission表,再与当前所需要的权限比较后,转向403或者继续执行渲染。

但是就RBAC的逻辑来说,不嫌麻烦的话,可以在每个Controller入口处判断一下。

理想状态下,所有RBAC判断应该以decorator形式存在。但是Tornado/Cyclone是异步框架,而且decorator本身就是需要异步访问数据库。而异步访问本身就是decorator,也就是说需要用decorator来修改decorator。

萌能量女王 2022-09-08 15:23:06

https://github.com/klada/django-auth-rbac/blob/master/README.md 这个是基于django auth实现的RBAC, 在课程实验里用过 可以研究下

抱着落日 2022-09-08 15:23:06

可以看一下Casbin,支持ACL、RBAC、ABAC等模型:https://casbin.org/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文