基于Django组的用户访问控制

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

所以,我的用户表具有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

提前致谢!


您必须编写自己的自定义权限类来决定用户属于特定权限类时要执行的操作。 这个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]。

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

[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

链接地址: http://www.djcxy.com/p/73403.html

上一篇: Django group based User Access Control

下一篇: User permissions from user own permission and group permission