【问题标题】:"You don't have permission to view or edit anything." even if user has access to model“您无权查看或编辑任何内容。”即使用户有权访问模型
【发布时间】:2020-03-24 20:08:12
【问题描述】:

已解决


我知道这个“错误”消息很常见,并且已经有关于此的帖子。但没有找到解决我的问题的方法。

我正在使用 Django 提供的已经存在的“User”、“Group”、“UserManager”。但是,我有一个自定义身份验证后端:

    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):

这么愚蠢的错误......

【问题讨论】:

    标签: django django-admin django-permissions


    【解决方案1】:

    我需要更改我的 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-16
      • 2011-04-12
      • 2016-02-06
      • 1970-01-01
      • 1970-01-01
      • 2011-05-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多