首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置user_permissions时,Django用户get_all_permissions()为空

设置user_permissions时,Django用户get_all_permissions()为空
EN

Stack Overflow用户
提问于 2010-01-17 21:15:01
回答 2查看 11.8K关注 0票数 28

我通过管理界面向用户添加了一些权限。

由于某种原因,所有的perm函数都失败了,例如

代码语言:javascript
复制
>>> user.get_all_permissions()
set([])

但是直接访问表是可行的:

代码语言:javascript
复制
>>> user.user_permissions.all()
(list of permissions as expected)

是什么导致"get_all_permissions“(以及所有像has_perm()这样的perm函数)失败?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-03 21:15:10

也有同样的问题。我猜你在某种程度上使用了自己制作的AUTHENTICATION_BACKEND?网上的大多数例子(包括DJANGO 1.0文档!)不要提到后端也要负责权限处理。

但是,没什么大不了的:无论您的代码驻留在哪个后端文件中,都要包含以下导入:

代码语言:javascript
复制
from django.contrib.auth.backends import ModelBackend

然后确保你编写的后端扩展了ModelBackend,例如:

代码语言:javascript
复制
class EmailBackend(ModelBackend):

应该没问题。

票数 48
EN

Stack Overflow用户

发布于 2021-11-12 17:13:11

在我的案例中,这是因为permission caching。我得到了用户,添加了对user.user_permissions的权限,但是user.get_all_permissions是空的set()user.has_permFalse。此问题仅与外壳一起管理,而不是

代码语言:javascript
复制
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

在检查权限之前,我必须添加额外的一行:

代码语言:javascript
复制
user.user_permissions.add(permission)

user = User.objects.get(username="User") # new

user.get_all_permissions()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2081061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档