django restframework学习笔记:权限组件
django restframework学习笔记:权限组件
Riv3n作用
在drf开发中,如果有些接口必须同时满足:A条件、B条件、C条件。 有些接口只需要满足:B条件、C条件,此时就可以利用权限组件来编写这些条件。
权限组件 = [权限类, 权限类, 权限类, …] -> 执行所有权限类的has_permission方法,返回True通过、返回False表示不通过
- 执行所有的权限类
- 学会源代码,扩展 + 自定义
默认情况下,保证所有的权限类中的has_permission方法都返回True,也就是支持且关系
且关系
默认支持:A条件 且 B条件 且 C条件,同时满足。
1 | class PermissionA(BasePermission): |
或关系
自定义(方便扩展)
源码只适合且关系,如果需要支持或关系,需要修改源码中的逻辑。
但是我们发正式环境不可能去修改drf源码,所以这里我们使用面向对象的继承方法,
直接在视图中去定义权限组件的check_permissions方法,这样优先使用视图中的,源码的不会生效
1 | class APIView(View): |
如果有较多的视图需要使用,可以单独定义一个视图类,添加自定义权限组件
然后视图引用这个view并继承即可(替代APIview)
与中间件的关系
中间件是最先执行的,直行道对象的dspatch方法的时候才开始执行我们的组件