如何为群组和管理员授予权限

 马仔盛世焚花 发布于 2023-02-08 09:05

我目前正在构建API,但是我无法确定允许组成员使用某些方法以及例如获得完全许可的最简单方法。管理员(甚至另一个组)。

基本上,我希望允许组成员访问之外的所有方法POST,而管理员(或另一个组)具有完全访问权限。

伪:

def get(self, request):
     if (user.is_superuser | Group.objects.get(name='APIUsers').user_set.filter(id=user.id).exists()):
     # Do something usefull

在仍然遵循Django-REST-Framework API的情况下,是否可以通过这种方式进行操作?

1 个回答
  • 您正在寻找Django REST Framework的Custom Permissions。您也可以查看IsAdminUser IsAuthenticatedOrReadOnly灵感。

    例如,您可以使用:

    from rest_framework import permissions
    
    class IsAdminOrReadOnly(permissions.BasePermission):
        """Allow unsafe methods for admin users only."""
    
        def has_permission(self, request, view):
            if not request.user or not request.user.is_authenticated():
                return False
            if request.user.is_superuser:
                return True
            if request.method in permissions.SAFE_METHODS:
                return bool(Group.objects.get(name='Patient').
                            user_set.filter(id=request.user.id).exists())
            return False
    

    您也可以看一下DjangoModelPermissions广告。

    然后,只需在整个API上使用新权限即可:

    # in settings.py
    REST_FRAMEWORK = {
        'DEFAULT_PERMISSION_CLASSES': (
            'myapp.permissions.IsAdminOrReadOnly',
        )
    }
    

    或根据需要在每个视图上。

    2023-02-08 09:10 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有