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,)

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容