一种微授权系统

clustaar.authorize的Python项目详细描述


#俱乐部授权

[![构建状态](https://travis-ci.org/clustaar/clustaar.authorize.svg?branch=master)(https://travis ci.org/clustaar/clustaar.authorize)
[![代码气候](https://codecoltimae.com/github/clustaar/clustaar.authorize/badges/gpa.svg)](https://codecoltimae.com/github/clustaar/clustaar.authorize)


只需使用`@authorize`decorator并确保在请求上下文上提供一个` ability`属性。

accessrule
来自clustaar.authorize.conditions导入条件

view_action=action(name=“view_project”)



class kwarg equals(condition):
“此条件验证kwarg值是否等于预期值。”
self.\u name=name
self.\u expected=expected

def\u call(self,上下文:
return context.get(self.\u name)==self.\u需要



class adminauthorizations(authorizations):
def初始化(self):
={
创建操作:拒绝,
查看操作:accessrule(condition=kwargequals(“id”,“1”))
}
super()。\uu init(rules=rules,







>用户能力=能力(用户授权())
>管理员能力=能力(管理员授权())
``





授权(查看操作,id=1);>;未发生异常
admin\u-ability.authorize(create\u-action)authorize(create\u action);>;未发生异常




>用户能力.可以(查看用户行为, id="1") # => True
用户能力.可以(查看用户行为, id="2") # => False
用户能力.可以(创建用户行为);>;false
>用户能力.authorize(查看用户行为, id="1") # => No exception raised
用户能力.authorize(创建用户行为,^{br/>


>用户能力.authorize(查看用户行为, id="1") # => No exception raised
用户行为, id="1") # => No exception raised
u action)引发异常:拒绝对创建项目({})
```

``python
``import falcon
管理能力
将是一种管理能力,等等)

def process_request(self,request,*args):
另一个中间件在context中注入了当前用户
user=request.context.user
如果user.has_role(“admin”):
authorizations=adminauthorizations()
否则:
authorizations=userauthorizations(user)
request.context.ability=ability(authorizations)



class projectshandler(object):
@authorize(create_action)
def on_post(self,request,response):
pass


class projecthandler(object):
@authorize(view_action)
def on_get(self,请求,响应,id):
传递

app=falcon.api(中间软件=(abilityInjectionMiddleware(),)
app.add_route(“/projects”,projectShandler())
app.add_route(“/projects/{id}”,projecthandler())
```

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java AfterburnerFX加载错误文件xyz。未找到fxml,正在尝试使用驼峰案例   java如何灵活地使用通用对象?   JAVA JPA保存到TSV而不是SQL   java关闭当前窗口并弹出上一个窗口(windowListener)   java删除\删除绑定对象   java构造函数。newInstance()在JUnit和实际运行时中的行为不同   java将字符串中的字符翻转到字母顺序   如何让java等待事件?   使用Flyway的java MySQL JDBC驱动程序   java ImageAdapter从HashMap put方法返回NullPointerException   java Camel:找不到restlet bean   java Gradle下载源依赖项   POST方法Spring和Thymeleaf中的java编码问题   用于管理后台作业的java Spring兼容机制   java在连续发送25MB文件5到10次的同时,我通过javamail收到以下异常   java应用程序在试图更改重新加载的片段中的FloatingActionButton的状态时不断崩溃   运行小程序时出现java Magic value错误   java如何使用jdbc连接将excel工作表中的数据存储到mysql数据库   Eclipse,来自src的Java。文件夹?