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

Bor*_*ris 25 django django-admin django-authentication django-permissions

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

由于某些原因,所有烫发功能都失败了,例如

>>> user.get_all_permissions()
set([])
Run Code Online (Sandbox Code Playgroud)

但直接访问表,工作:

>>> user.user_permissions.all()
(list of permissions as expected)
Run Code Online (Sandbox Code Playgroud)

什么可以导致"get_all_permissions"(和所有的perm函数,如has_perm())失败?

谢谢

Mar*_*ood 44

有同样的问题.我猜你在某些时候使用了自制的AUTHENTICATION_BACKEND?网络上的大多数示例(包括DJANGO 1.0文档!)都没有提到后端也负责权限处理.

但是,没有大问题:在您的代码所在的任何后端文件中,包含以下导入:

from django.contrib.auth.backends import ModelBackend
Run Code Online (Sandbox Code Playgroud)

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

class EmailBackend(ModelBackend):
Run Code Online (Sandbox Code Playgroud)

应该没事.

  • 我给你一个+1 b/c你听起来像个好人 (2认同)