django - “您无权查看或编辑任何内容。” 即使用户有权访问模型
问题描述
解决了
我知道这个“错误”消息很常见,并且已经有关于这个的帖子。但没有找到解决我的问题的方法。
我正在使用 Django 提供的已经存在的“用户”、“组”、“用户管理器”。但是,我有一个自定义身份验证后端:
class MyAuthentication:
# ...
# ...
def has_perm(self, user_obj, perm, obj=None):
permissions = Permission.objects.filter(user=user_obj)
if perm in permissions:
return True
return False
我的用户是管理员而不是超级用户。他是一个拥有查看、编辑、删除、添加我的模型的所有权限的组的成员。
他可以通过直接使用 URL 来访问它们。
但是,当他尝试连接到管理页面/admin/
时,他会收到此错误消息。
You don't have permission to view or edit anything
我搜索了一个允许他查看 django 文档中模型列表的权限,但什么也没找到。
我需要在后端身份验证中添加任何内容吗?添加一个新的烫发?即使是关于在哪里查看以进行调查的建议也将不胜感激!
编辑1
在调试django代码本身之后,我需要添加这个方法:
def has_module_perms(self, user_obj, perm, obj=None):
如此愚蠢的错误...
解决方案
我需要更改我的 has_perm,因为权限是权限的 QuerySet ...
如果有人需要,这是我的工作 has_perm 方法和固定代码,用于检查组权限和用户权限。
def has_perm(self, user_obj, perm, obj=None):
permissions = Permission.objects.filter(user=user_obj).values()
has_specific_perm = False
# Check groups permissions the user is member of
for group in user_obj.groups.all():
has_specific_perm = self.check_has_permission(perm, group.permissions.all().values())
# Check user's permissions if group was not enough
if not has_specific_perm:
has_specific_perm = self.check_has_permission(perm, permissions.values())
if user_obj.is_active and user_obj.is_staff and has_specific_perm:
return True
return False
def has_module_perms(self, user_obj, perm, obj=None):
return True
def check_has_permission(self, perm, permissions_to_check):
for index in range(len(permissions_to_check)):
if perm == permissions_to_check[index]['codename']:
return True
推荐阅读
- json - 有效的 JSON,解析时应生成字符串列表
- c++ - 在 callgrind 输出中解释 _dl_runtime_resolve_xsave'2
- database - 使用数据库 SQLite 的 Android 登录无法正常工作
- powerbi - 如何使用数据源作为 SQL Server 的 Power BI 地图显示实时数据?
- php - HTML 表单验证和安全性
- amazon-web-services - 在 AWS CodeBuild 中访问 GitHub 拉取请求详细信息
- android - 如何修复片段中的 RecyclerView.setLayoutManager NullPointerException
- r - 自 2019 年起如何在 R ggmap 中使用 Google API 密钥进行地理编码
- android - 如何在 Kivy 中将小部件转换为图像文件?
- java - 在属性文件中注入带有 webEnvironment = RANDOM_PORT 的生成端口