用户权限控制说明
在产品运营平台中,是需要对用户进行权限控制的。Django实现了用户权限的控制
- 消费者用户与公司内部运营用户使用一个用户数据库来存储
- 通过is_staff 来区分是运营用户还是消费者用户
- 对于运营用户通过is_superuser 来区分是运营平台的管理员还是运营平台的普通用户
- 对于运营平台的普通用户,通过权限、组和组外权限来控制这个用户在平台上可以操作的数据。
- 对于权限,Django会为每个数据库表提供增、删、改、查四种权限
- 用户最终的权限为 组权限 + 用户特有权限
权限表管理
在权限表中我们需要对权限表数据进行增删改查操作,这时候我们可以借助于视图集中的ModelViewset来完成相应的操作
获取用户权限表列表数据
接口分析
请求方式: GET /meiduo_admin/permission/perms/
# 用户权限管理
router = DefaultRouter()
router.register('permission/perms', permission.PermissionView, base_name='perms')
# print(router.urls)
urlpatterns += router.urls
请求参数: 通过请求头传递jwt token数据。
返回数据: JSON
{
"counts": "权限总数量",
"list": [
{
"id": "权限id",
"name": "权限名称",
"codename": "权限识别名",
"content_type": "权限类型"
},
...
],
"page": "当前页码",
"pages": "总页码",
"pagesize": "页容量"
}
返回值 | 类型 | 是否必须 | 说明 |
---|---|---|---|
counts | int | 是 | 权限总数量 |
lists | 数组 | 是 | 权限表信息 |
page | int | 是 | 页码 |
pages | int | 是 | 总页数 |
pagesize | int | 是 | 页容量 |
后端实现
from django.contrib.auth.models import Permission, ContentType
from rest_framework.viewsets import ModelViewSet
from meiduo_admin.serializers.permission import PermissionSerializer
from meiduo_admin.utils import UserPageNum
class PermissionView(ModelViewSet):
serializer_class = PermissionSerializer
queryset = Permission.objects.all()
pagination_class = UserPageNum
序列化器的定义
from django.contrib.auth.models import Permission, ContentType
from rest_framework import serializers
class PermissionSerializer(serializers.ModelSerializer):
"""
用户权限表序列化器
"""
class Meta:
model = Permission
fields = "__all__"
运行效果: