【发布时间】:2021-10-20 07:08:22
【问题描述】:
我使用Django Guardian 来获得对象级权限以及全局权限。一些用户具有具有全局权限的组,而一些用户具有对象级权限。有了这个,我似乎需要修改PermissionRequiredMixin 来检查对象级权限。
views.py
class MainPageView(PermissionRequiredMixin, TemplateView):
permission_required = "app.view_mainpage"
template_name = "web/mainpage.html"
如果用户具有全局权限,则此方法有效,但如果用户在具有对象级权限的组下,则不会。使用监护人,要检查对象级别的权限,您还必须传递对象实例。
示例:
self.request.user.has_perm('view_mainpage', obj)
在PermissionRequiredMixin 上,检查只是这样,self.request.user.has_perms(perms)
那么如果用户有一个特定对象的view_mainpage权限的组,我该如何检查呢?顺便说一句,我所有的权限都是相同的content_type。有什么办法可以执行吗?就像我必须将对象实例传递给 PermissionRequiredMixin 如果用户在对象级组下,如果用户在全局组下则 None。
【问题讨论】:
标签: django django-permissions django-guardian