# 01.权限配置
[toc]{type: "ol", level: [2, 3, 4, 5]}
### 全局权限配置
```python
### settings.dev
REST_FRAMEWORK = {
# 配置权限 全局配置
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.AllowAny',
],
}
```
<br><br>
### 设置分类权限
#### 属性方式:
```python
### shop.views
from rest_framework import permissions
class CategoryModelViewSet(viewsets.ModelViewSet):
# 权重高于全局配置 管理员身份才有此权限
# 在user_user表中,可选择用户是否为管理员
# 此处不加(),指定类即可
permission_classes = [permissions.IsAdminUser]
```
#### 函数方式:
```python
### shop.views
from rest_framework import permissions
class CategoryModelViewSet(viewsets.ModelViewSet):
# 管理员可创建分类,普通用户只能查看分类
def get_permissions(self):
ac = self.action
# post put patch delete
if ac == 'create' or ac == 'update' or ac == 'partial_update' or ac == 'destroy':
# 此处加(),写入实例 超级管理员:可以增删改查分类
return [permissions.IsAdminUser()]
# return [CategoryPermission] 一般不需要自定义
else:
# 默认处理 登录用户[包含超级管理员]:可以查看分类
return [permissions.IsAuthenticated()]
```
![drf](imgs/01.png)
![drf](imgs/02.png)
<br><br>
### 自定义授权类
```python
### shop.permissions
from rest_framework import permissions
class CategoryPermission(permissions.BasePermission):
# 视图级别
def has_permission(self, request, view):
return True
# 授权的前提是认证,认证登陆过之后,才可以进行权限判定
# 导入后使用即可:
# from shop.permissions import CategoryPermission
```