django - Django DRF 角色级别权限
问题描述
我已经使用 DRF 开发了 API。我正在努力将授权部分与我们在管理部分中为 API 的每个角色定义的 Django 默认权限相关联。
假设我有两个 API Customer Management
,Customer Sales
并且在 Django 管理门户中从它们创建了两个角色。manager
角色将只管理客户(add
、、和) view
,而角色将管理每个客户的销售( 、、和)。delete
update
sales
add
view
delete
update
当我尝试在管理门户中测试它们时,权限工作正常。对应的角色有对应的权限。如果我将其与 REST API 一起使用,则它不符合后端定义的权限。就像两个角色都能够访问这两个 API。
我该如何处理?我应该实现自己的权限系统而忽略 Django 中使用的旧权限系统(auth_permission
, auth_group_permissions
, auth_user_user_permissions
),还是有任何解决方法可以使用 Django 权限来完成这项工作?
解决方案
您可以使您的权限类如下
class CustomPermission(BasePermission):
def has_permission(self, request, view):
if request.user.is_authenticated():
return True if request.has_perm('can_read') else False # or stuff similar to this
return False
并将此类CustomPermission
用于您APIView
的属性。
有关DRF 权限的更多信息,请访问https://www.django-rest-framework.org/api-guide/permissions/
推荐阅读
- git - 使用 Maven 发布插件在同一提交中标记和分支
- r - R ggraph/ggplot2 颜色图例未正确显示
- java - 使用 PDFBox 2.0.17 签署具有多个签名字段的 PDF
- google-chrome - 使用 Chrome 进行 Google 搜索会触发对该网站的调用
- python - 如何向图像框架添加一些文本,然后从框架中获取文本
- python - 如何将熊猫数据框转换为多个 NamedTuple 的列表
- sql - QUOTENAME 等效函数 bigquery
- c - 用于缓存模拟器的 malloc 两个结构
- .net - 您如何保护您的 JWT 对称安全密钥?
- java - Lombok EqualsAndHashCode 按内部对象字段