问题标签 [django-guardian]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
719 浏览

python - 自定义和非托管用户模型/传统用户表

我正在尝试django-guardian使用我的自定义用户模型。该模型继承自AbstractUser,也继承自GuardianUserMixin。这是User模型:

我面临的问题是当我检查权限时。例如这里request.user.has_perm(...)

这是错误消息:

ProgrammingError at /manageDb/mira/follow/14/ relation "users_groups" does not exist LINE 1: ...sion"."group_id" = "auth_group"."id" ) INNER JOIN "users_gro...

追溯:

问题似乎是对不存在guardian的表进行查询,而是调用它,它是由. 所以问题归结为在users_groupsauth_groupsdjango.authguardian

0 投票
1 回答
656 浏览

python - django-guardian get_objects_for_user 的替代品

我们在一个项目中成功地使用了 django-guardian 和 django-rest-framework。但是,当用户拥有 1000 个具有所需权限集的对象时,为具有某些权限的特定用户获取对象的标准方法似乎非常慢。

IN它在一个子句中生成一个包含 1000 个 ID 的查询。当考虑到 Web 服务器和数据库服务器之间的网络延迟时,这似乎会产生后续影响:从数据库中提取 1000 个 id,解析它们,然后在IN子句中将它们发送回数据库。

是否有任何记录在案的解决方法?使用该get_objects_for_user方法并将object_pk列更改为整数,我能够使用内联选择语句运行它:

与当前的声明相比:

我还没有尝试过的另一个解决方法是以某种方式减少监护人获取的 id 的范围。例如,一个用户有 1000 个对象,但我只对过去 6 个月的对象感兴趣。目前,它为用户获取所有可能具有正确权限的对象 ID,而不是以任何方式限制它。

0 投票
1 回答
1512 浏览

python - Django REST 框架:使用对象级权限而没有模型级权限

我有一个基于Django REST 框架的 API 的 Django 项目。

最近我使用django-guardian启用了对象级权限。但是,我还没有在我的项目中使用模型级权限框架(直到此刻我还没有看到任何目的。)

现在,当我在我的 API 视图集中打开DjangoObjectPermissions时,

并向端点发出更新请求,以获得来自 Guardian 框架的适当“更改”权限的对象,我得到了403 FORBIDDEN响应。

此响应的原因似乎在于请求调度阶段

  1. 在这种情况下,DRF 检查模型权限。
  2. DjangoObjectPermissions继承自DjangoModelPermissions
  3. DRF 呼叫DjangoObjectPermissions.has_permission()
  4. has_permission()失败,因为我没有使用模型级权限。

DjangoObjectPermissions在我的情况下使用的正确方法是什么?

  • (A) 实现一个自定义权限类,继承DjangoObjectPermissions并覆盖它has_permission()
  • (B) 为了它而打开 Django 的模型级权限框架。
  • (C) 使用这个hack 变通方法跳过检查。
0 投票
0 回答
136 浏览

python - 使用 Django Rest Framework 和 Guardian 将 View_Group Perm 添加到组表

我正在使用 Django 1.9、Guardian 和 Django Rest Framework 编写应用程序。

我正在尝试向组添加一个新的烫发 (view_group)。这个新的 perm 将控制登录用户在调用后端时可以看到哪些组。我正在使用 DjangoObjectPermissions。

显然,将 view_group 权限添加到 django.contrib.auth.models.Group 类似乎非常令人生畏。我想知道是否有人设法做到了。如果是这样,请让我看看解决方案。

这是我的模型

我收到此异常内容类型匹配查询不存在。虽然我试图破解它并添加到系统中。

0 投票
1 回答
1397 浏览

python - Django监护人:如何给所有用户匿名用户的权限

我正在使用 django-guardian 在我的 Django 项目中实现每个对象的权限。我遇到了注册用户无法查看匿名用户能够查看的对象的问题。我曾认为如果匿名用户有权限,那么注册用户应该有相同的权限(我无法想象我的网站的一部分我希望匿名用户能够做某事而注册用户不能做某事)。

在我的项目中,我有一些可以是“公共”或“私有”的对象。当用户将对象标记为“公共”时,我将“view_object”权限授予匿名用户。我的视图使用 保护PermissionRequiredMixin,如下所示:

Django Guardian 是否提供某种方式为注册用户提供与匿名用户相同的权限?或者,如果用户没有权限但匿名用户有权限,是否有某种方法可以对 PermissionRequiredMixin 进行子类化以允许该操作?

0 投票
1 回答
493 浏览

python - django Guardian importerror 但其他示例有效

首先,我对 django 和 python 都是新手。

我正在开发一个使用 django-guardian 1.3.2 的现有项目。我验证了部署此应用程序的服务器也使用 1.3.2 via pip list

我试图了解异常的原因。

现有的 admin.py 文件可以很好地加载。

我添加了我的,这也有效(在我的机器上)。

我们部署了应用程序,现在它无法启动,出现以下异常:

Traceback(最近一次调用最后):文件“/usr/local/share/.virtualenvs/my_app/lib/python2.7/site-packages/django/core/handlers/wsgi.py”,第187行,调用 self。 load_middleware() 文件“/usr/local/share/.virtualenvs/my_app/lib/python2.7/site-packages/django/core/handlers/base.py”,第 47 行,在 load_middleware mw_instance = mw_class() 文件中“ /usr/local/share/.virtualenvs/my_app/lib/python2.7/site-packages/django/middleware/locale.py”,第 24 行,在init 对于 get_resolver(None).url_patterns 中的 url_pattern:文件“/usr/local/share/.virtualenvs/my_app/lib/python2.7/site-packages/django/core/urlresolvers.py”,第 365 行,在 url_patterns 模式 = getattr(self.urlconf_module,“urlpatterns”,self.urlconf_module)文件“/usr/local/share/.virtualenvs/my_app/lib/python2.7/site-packages/django/core/urlresolvers.py”,第360行,在 urlconf_module self._urlconf_module = import_module(self.urlconf_name) 文件“/usr/local/share/.virtualenvs/my_app/lib/python2.7/site-packages/django/utils/importlib.py”,第 40 行,在 import_module 导入(名称)文件“./sites/zpanel/urls.py”,第 19 行,在 admin.autodiscover() 文件“/usr/local/share/.virtualenvs/my_app/lib/python2.7/站点包/django/contrib/admin/ init.py”,第 29 行,在自动发现 import_module('%s.admin' % app) 文件“/usr/local/share/.virtualenvs/my_app/lib/python2.7/site-packages/django/utils/importlib. py”,第 40 行,在 import_module 导入(名称)文件“./common/admin.py”,第 3 行,从 Guardian.admin 导入 GuardedModelAdmin ImportError:没有名为 admin 的模块

服务器正在运行 python 2.7.6,我使用的是 2.7.10。我不认为这是一个问题,因为其他 admin.py 文件从guardina.admin 导入就好了。

0 投票
2 回答
4102 浏览

django - DRF 视图集中的权限检查无法正常工作

我正在实现一个有嵌套结构的 API。

假设它是一个动物园,我可以调用GET /api/cage/获取笼子列表GET /api/cage/1/以获取笼子 ID 1,但随后我可以GET /api/cage/1/animals/获取该笼子中的动物列表。

我遇到的问题是权限。如果我能看到笼子本身,我应该只能看到笼子里的动物。如果在相关权限类中has_object_permission()返回,我应该能够看到笼子本身。True

出于某种原因,has_object_permission()当我做 GET 时被调用/api/cage/1/,但has_permission()在我调用时被调用GET /api/cage/1/animals/。而且has_permission()我无权访问该对象来检查权限。我错过了什么吗?我该怎么做呢?

我的笼子视图或多或少看起来像这样

我的GeneralZooPermissions课看起来像这样(目前)

这似乎是 DRF 中的一个错误。详细路由不调用正确的权限检查。我曾尝试向 DRF 开发人员报告此问题,但我的报告似乎消失了。不知道下一步该怎么做。想法?

我用 DRF 发布的问题又回来了,我得到了回复。似乎只检查has_permission()而不是has_object_permission()预期的行为。这对我没有帮助。此时,必须执行以下操作:

0 投票
1 回答
2339 浏览

python - django-guardian 和 django-rules 可以一起使用吗?

我希望能够使用django-guardian.

但我想围绕这些权限添加一层逻辑。例如,如果某人edit_book对 a 有权限Book,那么他们对Pages该书的编辑权限应该是隐式的。rules包装似乎很理想。

0 投票
1 回答
411 浏览

python - Django-Guardian - 限制组访问类

我已按照 django-guardian 文档中的用户指南设置 django-guardian。这使我可以控制一个小组是否可以查看特定课程。这是来自 django-guardian 文档的示例,其中添加了字段(客户):

这(以及 django-guardian 文档示例中的其他代码)允许我通过 django 管理员授予特定用户和组“查看任务”的权限。问题是我想根据客户是谁来限制哪些任务组可以看到。例如,只有分配给客户 A 的顾问才能看到 task.customer = 'A' 的任务。有没有办法设置它?

任何帮助深表感谢。

0 投票
10 回答
28646 浏览

django - django.core.exceptions.ImproperlyConfigured:AUTH_USER_MODEL 指的是尚未安装的模型'auth.User'

迁移我的 django 和 userena 包后,如下所示

Django 1.8 到 Django 1.9.7

django-userena 1.4.1 到 django-userena==2.0.1

运行项目后,我遇到了这个错误

django.core.exceptions.ImproperlyConfigured:AUTH_USER_MODEL 指的是尚未安装的模型'auth.User'

这是我的设置文件中的 INSTALLED_APPS,

我猜python应用程序有一些变化。但我找不到原因......有人帮忙解决这个问题吗?

提前致谢 !