即使组具有权限,Django用户has_perm也返回false

时间:2017-03-30 01:02:21

标签: django django-permissions django-1.10

我遇到了一个问题,我创建了一个具有特定权限的群组,并成功地将用户添加到该群组,但是当我使用该权限检查user.has_perm时,我收到了错误。< / p>

我甚至尝试过保存用户并从数据库中重新获取它们以避免缓存问题,但它没有任何区别。

下面的终端输出应该知道发生了什么

# Get a group from the database and check its permissions
> special_group = Group.objects.get(name="special_group")
> a_perm = special_group.permissions.all()[0]
> a_perm.codename
'some.permission'

# Get a user from that group and check if they have those permissions
> a_user = special_group.user_set.all()[0]
> a_user.has_perm(a_perm.codename)
False
> a_perm.codename in a_user.get_group_permissions()
False

# Curiously, get_group_permission sort of returns what we need
> a_user.get_group_permissions()
{'ContentType object.some.permission'}

# If we essentially coax the group_permissions into a list and pull an item out of there, has_perm returns true, but this string is different to a_perm.codename
> a_user.has_perm(list(a_user.get_group_permissions())[0])
True

有谁知道为什么has_perm没有像我期待的那样行事?我们正在使用Django 1.10.3。

0 个答案:

没有答案