我通过管理界面向用户添加了一些权限。
由于某种原因,所有的perm函数都失败了,例如
>>> user.get_all_permissions()
set([])但是直接访问表是可行的:
>>> user.user_permissions.all()
(list of permissions as expected)是什么导致"get_all_permissions“(以及所有像has_perm()这样的perm函数)失败?
谢谢
发布于 2010-05-03 21:15:10
也有同样的问题。我猜你在某种程度上使用了自己制作的AUTHENTICATION_BACKEND?网上的大多数例子(包括DJANGO 1.0文档!)不要提到后端也要负责权限处理。
但是,没什么大不了的:无论您的代码驻留在哪个后端文件中,都要包含以下导入:
from django.contrib.auth.backends import ModelBackend然后确保你编写的后端扩展了ModelBackend,例如:
class EmailBackend(ModelBackend):应该没问题。
发布于 2021-11-12 17:13:11
在我的案例中,这是因为permission caching。我得到了用户,添加了对user.user_permissions的权限,但是user.get_all_permissions是空的set(),user.has_perm是False。此问题仅与外壳一起管理,而不是。
user = User.objects.get(username="User")
permission = Permission.objects.get(
codename="organizations.add_organization",
)
user.user_permissions.add(permission)
user.get_all_permissions() # set()
user.has_perm('organizations.add_organization') # False在检查权限之前,我必须添加额外的一行:
user.user_permissions.add(permission)
user = User.objects.get(username="User") # new
user.get_all_permissions()https://stackoverflow.com/questions/2081061
复制相似问题