0
点赞
收藏
分享

微信扫一扫

restful专栏 09.用户授权 01.权限配置

eelq 2022-04-13 阅读 30
restful

# 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
```

 

举报

相关推荐

0 条评论