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

JavaCake的

我目前正在构建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的情况下,是否可以通过这种方式进行操作?

尼古拉斯·科尔托(Nicolas Cortot)

您正在寻找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',
    )
}

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何为我的 ADO 项目授予管理员权限?

如何授予PyCharm管理员权限?

如何为本地用户Windows 10 Pro授予管理员权限?

我应该向哪个秘密管理员授予权限?

如何为不同的用户授予权限

如何授予管理员和作者查看 django 中特定页面的权限?

如何为特定目录的管理员分配目录权限?

如何为Django / Mezzanine网站的管理员设置权限

旧版Azure AD应用程序注册中的“授予权限”按钮与新体验中的“授予管理员同意”有什么不同?

GitHub如何根据仓库的标签授予用户管理员访问权限

管理员创建新用户时,如何仅授予用户查看权限?

如何在 Azure SQL Server 中向 AAD 用户授予管理员权限

管理员如何授予对应用程序的访问权限?

如何授予非管理员权限以更改Windows上的本地安全策略?

如何添加用于向Azure AD应用授予静态权限的管理员帐户?

管理员如何仅针对应用程序注册授予特定用户访问权限?

授予非管理员用户访问模板模块的权限

向非管理员用户授予RDP访问权限

Java在Eclipse中授予管理员权限

未向Dynamics 365管理员授予安装权限

授予整个注册表Hive的管理员权限?

授予组全局权限,类似于声纳管理员

向管理员授予现有Powershell的权限

授予应用程序管理员权限

403 IAM权限,尽管向代理授予管理员权限以授予列表意图的权限

管理员权限

标准/管理员用户的before_action:如何授予管理员所有其他用户的权限?

启动时如何为Windows服务实现临时管理员权限窗口

Azure AD:如何为我的AD原则内的所有用户授予权限