django Django-REST-framework权限问题

在使用Django-REST-framework(以下都称为restful)时会遇到接口的权限问题,当需要定义角色权限的时候,一般都会定义一个原鉴权函数,例如:

class IsSuperAdmin(permissions.BasePermission):
    """
    超级管理员
    """

    def has_permission(self, request, view):
        if request.method not in permissions.SAFE_METHODS:
            if not request.user.is_superuser:
                return False
        return True代码块
class IsAdmin(permissions.BasePermission):
    """
    系统管理员
    """

    def has_permission(self, request, view):
        if request.method not in permissions.SAFE_METHODS:
            role = get_role(request.user)
            if role != RoleType.Admin.value:
                return False
        return True

定义多个权限函数,同时按照某个逻辑增加到某个接口上面,例如:

permission_classes = ( IsAdmin | IsSuperAdmin,)

类似这样组合权限控制接口的

你可能感兴趣的:(django Django-REST-framework权限问题)