请问有通用性较强的RBAC模块可以用于web吗,rbacweb,我在评估Cyclone,
请问有通用性较强的RBAC模块可以用于web吗,rbacweb,我在评估Cyclone,
我在评估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, 在课程实验里用过 可以研究下
编橙之家文章,
相关内容
- Python flask代码优化求大神指点,pythonflask,@bp.route(/s
- 关于Flask中endpoint和blueprint正解解读是什么,flaskendpoi
- Python正则表达式匹配数字问题,python正则表达式,上面是
- 请教Python分割bytes最佳方法,python分割bytes,我有很多b
- Python logging模块如何时将函数执行信息写入文件,,例如
- 请问协程是goto这样理解对吗,协程goto对吗,协程就是
- 用python做微信公众号开发,怎样获取用户到id并跳转到
- 先学习Python之后再学习PHP与java会更好吗,pythonjava,学过
- Python flask实现delete键删除评论用什么方法,pythonflask,后
- Python generator实现同样效果函数是什么,pythongenerator,同
评论关闭