问题标签 [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 投票
0 回答
285 浏览

django - 使用 Django Rest Framework 和 django-guardian 实例返回对象权限的最佳方法是什么

我正在使用 Django Rest Framework 和 django-guardian(针对每个对象权限),使用实例返回对象权限的最佳方法是什么。

例如现在请求“/api/v1/objects/”返回:

但我想返回具有权限的对象:

这将很有用,例如,如果用户无权删除对象,则在前端不显示删除按钮。

下面是项目结构:

0 投票
0 回答
399 浏览

python - 使用 Django-guardian 和 Flatpages 仅设置一个对象的权限

我正在尝试使用 Django-guardian 将权限应用于特定的平面页面。我们的网站上有许多平面页面,在大多数情况下,django-auth 可以满足我们的需要。但是,我们希望为某些平面页面和特定用户添加对象级权限。

例如,我有一个用户YOUNGTEMP,我想授予该用户编辑网站上所有平面页面子集的权限。

我已经安装了 Django-guardian,并使用 shellchange_flatpage为该用户授予了相应站点的权限。这个用户根本没有其他权限,因为我不希望他们看到除了这个来自管理员的网站之外的任何东西。

我可以通过查看数据库来验证权限是否存在,以及当我以 SU 身份登录时它们是否出现在管理员中。为什么当我以该用户身份登录时,YOUNGTEMP管理站点会告诉我我没有编辑任何内容的权限?

我按照此处readthedocs.io 页面的摘录在 shell 中分配权限,以确保我的覆盖管理员没有问题,如下所示:

我卡住了,因为一切似乎都在工作,但仍然无法实现我的目的......

回复:@solarissmoke 的要求:

结果get_users_with_perms >>> get_users_with_perms(page_i_want_to_give_perms_for[0],attach_perms=True) {<User: epss_student_worker>: [u'change_flatpage']}

0 投票
1 回答
1056 浏览

python - Django 权限属于组,但该组上的用户没有组的权限

我决定不使用django-guardian,因为如果我的客户删除/创建Group,我必须增加更多开销ModelManager才能将现有权限转移到新组。因此,让filter_queryset通过 Django REST 过滤的实例对我来说很好。

失败测试案例:

问:
我哪里错了?

更新 2017 年 11 月 16 日 10:30 GMT+7 添加第 4 个网址 要点: 公司:https : //gist.github.com/elcolie/684ba34391d0a94df7ca98855cea765b 角色:https ://gist.github.com/elcolie/64a3a3daf22240b2072e113eb10164e2 用户角色 :https:/ /gist.github.com/elcolie/d28e7fcf54334a9f13df5fff1b7d9fe0 商业许可:https ://gist.github.com/elcolie/bbeb00f41db0c7884cee34c6bccaf5f9




参考:
Django 用户 has_perm 返回 false 即使组具有权限
Django 用户没有获得分配组的权限
django 组权限

0 投票
1 回答
951 浏览

django - Django 信号触发但未保存

就像标题所说的那样。接收者正在被触发,并且这些方法中的post_save权限正在更改,但它们在管理页面上保持不变。

这是我正在使用的模型,仅剥离到有问题的部分。

该方法if..elsesave_user_roledjango shell 中有效,但在我的信号中无效。我绝对不能instance再次保存,因为这会导致无限循环的后期保存。

保存到我的角色模型不起作用,因为必须将权限保存到用户和组。

我猜这是对我应该如何使用信号或保存模型的误解。为什么我的权限没有被保存?我将来可以做些什么来避免这种情况?

0 投票
3 回答
1333 浏览

python - Django中多个模型的原始查询和行级访问控制

我正在尝试为用户提供一个界面,以便在数据库上编写自定义查询。我需要确保他们只能查询他们被允许的记录。为了做到这一点,我决定使用django-guardian应用基于行的访问控制。

这是我的模式的样子

我希望能够使用get_objects_for_group如下:

这给了我一个查询集。我可以使用上面定义的 BaseClass 并针对其他相关类编写原始查询吗?

这种方法有意义吗?有没有更好的方法来解决这个问题?

谢谢!

编辑:

解决该问题的另一种方法可能是为每个用户创建一个单独的表。我了解这可能会增加我的应用程序的复杂性,但是:

  • 用户数长期不会超过100s。不是消费者应用程序。
  • 根据我们的用例,我不太可能需要跨这些表进行查询。我不会编写需要从 table1、table2、table3 聚合属于同一模型的任何内容的查询。
  • 为每个客户维护一个单独的表可能具有优势。

您认为这是一种可行的方法吗?

0 投票
0 回答
685 浏览

python - 如何在 save_model 上获取旧字段值

我希望我的项目有一位具有lead_project权限的领导者来管理各个项目。这个领导者作为 ForeignKey 存储在 Project 类中。在我的自定义 ProjectAdmin 中,我设法通过定义save_model来分配权限。

我的项目类:

我正在使用 django-guardian 获取对象权限,Assign_perm是它的快捷方式之一。我想过使用remove_perm(也是一个 django-guardian 快捷方式),但我需要“旧”用户的 ID。

问题:我如何获得旧用户的 ID,或者一般来说,一个字段的前一个值。

0 投票
1 回答
126 浏览

django - save_model 中的代码在第二次保存时执行,而不是第一次

我在我的 UserAdmin 中定义了一个 save_model 来更改用户的对象级别权限。

remove_perm 和 assign_perm 是 django-guardian 的快捷方式,workingproject 是用户的 M2M 字段。

问题:选择不同的项目并保存权限时不会更改,但是第二次按“保存”按钮可以根据需要进行更改。我究竟做错了什么?

0 投票
1 回答
987 浏览

python - 根据 django-guardian 权限覆盖 get_queryset

我试图get_queryset根据用户从 django Guardian 获得的对象权限进行覆盖,以便只有对象是可见的,用户有权访问这些对象。

可悲的是,这实际上什么都不做,并且所有项目,无论用户拥有什么权限,都是可见的。

0 投票
2 回答
938 浏览

django - 使用自定义用户类迁移到 django-guardian 权限

我正在尝试迁移我的模型以使用 Guardian 权限。在这一点上,我有:

我创建了一个添加新权限的迁移,在自定义迁移中,我尝试分配如下权限:

这失败了 guardian.exceptions.NotUserNorGroup: User/AnonymousUser or Group instance is required (got EmailUser object)

有没有更好/更合适的迁移到 Guardian 的方法?如果没有,我如何让它看到我的自定义用户类?

0 投票
2 回答
589 浏览

django - 如何自动将 CRUD 权限添加到 Meta 类中的 django 模型?

想象一下我有以下模型

我想要的是permission_generator()生成元组

在某种程度上,我可以在所有模型中重复使用,而无需在每次定义新模型时重复自己。

如何实施这样的事情?