在我的Django管理员中,我添加了一个名为privilage class的新字段以及组和用户权限。
所以,我的用户表有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
提前致谢!
答案 0 :(得分:2)
您必须编写自己的自定义权限类,以决定当用户属于特定权限类时要执行的操作。这个网址[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