基于 Django 组的用户访问控制

Django group based User Access Control

在我的 Django 管理员中,我添加了名为 privilage class 的新字段以及组和用户权限。

所以,我的用户 table 拥有 privilage_class,因为我正在授予对多个组的访问权限。每个组有 user_permissions.

我进行了管理员设置,但权限未实现。除了做什么?

例如:

user having priv class executive 
Privilege class if executive he having access to multiple groups->
    Assets
    Billing
    etc 

每个组都有用户权限(URL),

Assets -> assets related URL
Billing -> related URLs
etc...  

设置已完成。但不知道如何申请权限

我知道难懂但是亲会懂的。请帮我解决这个问题。

我也在使用 Django 和 DRF

提前致谢!

您必须编写自己的自定义权限 class 来决定当用户属于特定权限时要做什么 class。这个 url [1] 有文档来实现它。

示例实现:

class UserPrevilagePermission(permissions.BasePermission):

    def has_permission(self, request, view):
        user = request.user
        # check if the user has required permission based on request url
        if 'assets' in request.path:
           # decide which perm to check
           if user.has_perm('perm-name-to-check'):
               return True
        return False

现在按照此处 [2] 的说明在您的视图中使用此权限 class。

从这里 [3] 查看 django 对用户对象的权限方法。

[1] http://www.django-rest-framework.org/api-guide/permissions/#custom-permissions

[2] http://www.django-rest-framework.org/api-guide/permissions/#setting-the-permission-policy

[3] https://docs.djangoproject.com/en/1.11/ref/contrib/auth/#methods