玩蛇网提供最新Python编程技术信息以及Python资源下载!
您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容

请问有通用性较强的RBAC模块可以用于web吗

我在评估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?如果轮子找不到,只有自己重新造轮子了。

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

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

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

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

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

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

玩蛇网文章,转载请注明出处和文章网址:http://www.iplaypy.com/wenda/wd18472.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年06月12日 - 10时28分53秒 发布自玩蛇网

我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules