在项目开发中经常会遇到权限控制的问题,用过Flask-Principal,不过感觉用得非常不习惯,所以花时间倒腾了一下。
库文件是flask_permission.py。
然后在文件rules.py中定义细粒度的Rule。每个Rule类的一般需要定义:
* base():定义该rule的先验rule
* check():定义该rule的检测逻辑
* deny():若该rule未通过,需要做出何种反馈(比如跳转登陆页、返回403等)
接着在permissions.py中根据之前定义的rules拼装各种业务需要的权限,使用`&`与`|`操作符。
最后就可以用了,在examples.py中提供了三种使用示例:
* 用于view的装饰器
* 用于view代码中
* 用于Jinja2中
目前用于现有的小项目还是够用的。如果权限管理的需求非常复杂的话,是hold不住的,估计得祭出RBAC...
https://gist.github.com/hustlzp/011be36d7bd950f21c17
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/132526
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.