基于 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
在我的 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