【发布时间】:2014-01-10 06:38:28
【问题描述】:
设置
我刚开始使用django-guardian 并立即遇到了一些障碍。我通过扩展 AbstractBaseUser 类来使用自定义用户。我按照this 示例设置了我的models.py 和admin.py。我还按照developers guide 配置指南来设置监护人。
问题
django-guardian 抛出 AttributeError: type object 'MyCustomUser' has no attribute 'groups' 错误(MyCustomUser 是我的自定义用户类)每当我尝试 get 与用户相关的权限时,即当我添加权限时,它直接进入 @ 987654326@ 表,应该的。但是,调用get_perms 会引发上述错误。
尝试通过管理页面编辑权限时出现相同的错误。 (程序性添加的权限不会出现在这里。:/) 我写了一个小的 manage.py 任务来测试它:
class Command(BaseCommand):
def handle(self, *args, **options):
user1 = MyCustomUser.objects.filter(username='pankaj')[0]
checker = ObjectPermissionChecker(user1)
# model on which permissions are applied
stream = Stream.objects.filter(uuid='001')[0]
# works on the database level, doesn't show up on admin page
assign_perm('read_stream', user1, stream)
# error
print 'read_stream' in get_perms(user1, stream)
# error
print checker.has_perm('read_stream', stream)
# error
print checker.get_perms(stream)
# works on the database level, doesn't show up on admin page
remove_perm('read_stream', user, stream)
# ALWAYS returns True, irrespective of whether permission granted or not
print user.has_perm('read_stream', stream)
可能的解决方案
-
设置身份验证后端可能存在问题。我目前将其设置为:
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend', 'guardian.backends.ObjectPermissionBackend',)
也许实施自定义用户 => 更改/实施自定义组?目前我在 admin.py 中有 admin.site.unregister(Group),但更改它并没有帮助。
由于开发者有warned,监护人可能不兼容自定义用户?
【问题讨论】:
标签: python django django-models user-permissions django-guardian