问题标签 [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.
django - 使用 Django Rest Framework 和 django-guardian 实例返回对象权限的最佳方法是什么
我正在使用 Django Rest Framework 和 django-guardian(针对每个对象权限),使用实例返回对象权限的最佳方法是什么。
例如现在请求“/api/v1/objects/”返回:
但我想返回具有权限的对象:
这将很有用,例如,如果用户无权删除对象,则在前端不显示删除按钮。
下面是项目结构:
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']}
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 组权限
django - Django 信号触发但未保存
就像标题所说的那样。接收者正在被触发,并且这些方法中的post_save
权限正在更改,但它们在管理页面上保持不变。
这是我正在使用的模型,仅剥离到有问题的部分。
该方法if..else
在save_user_role
django shell 中有效,但在我的信号中无效。我绝对不能instance
再次保存,因为这会导致无限循环的后期保存。
保存到我的角色模型不起作用,因为必须将权限保存到用户和组。
我猜这是对我应该如何使用信号或保存模型的误解。为什么我的权限没有被保存?我将来可以做些什么来避免这种情况?
python - Django中多个模型的原始查询和行级访问控制
我正在尝试为用户提供一个界面,以便在数据库上编写自定义查询。我需要确保他们只能查询他们被允许的记录。为了做到这一点,我决定使用django-guardian应用基于行的访问控制。
这是我的模式的样子
我希望能够使用get_objects_for_group如下:
这给了我一个查询集。我可以使用上面定义的 BaseClass 并针对其他相关类编写原始查询吗?
这种方法有意义吗?有没有更好的方法来解决这个问题?
谢谢!
编辑:
解决该问题的另一种方法可能是为每个用户创建一个单独的表。我了解这可能会增加我的应用程序的复杂性,但是:
- 用户数长期不会超过100s。不是消费者应用程序。
- 根据我们的用例,我不太可能需要跨这些表进行查询。我不会编写需要从 table1、table2、table3 聚合属于同一模型的任何内容的查询。
- 为每个客户维护一个单独的表可能具有优势。
您认为这是一种可行的方法吗?
python - 如何在 save_model 上获取旧字段值
我希望我的项目有一位具有lead_project权限的领导者来管理各个项目。这个领导者作为 ForeignKey 存储在 Project 类中。在我的自定义 ProjectAdmin 中,我设法通过定义save_model来分配权限。
我的项目类:
我正在使用 django-guardian 获取对象权限,Assign_perm是它的快捷方式之一。我想过使用remove_perm(也是一个 django-guardian 快捷方式),但我需要“旧”用户的 ID。
问题:我如何获得旧用户的 ID,或者一般来说,一个字段的前一个值。
django - save_model 中的代码在第二次保存时执行,而不是第一次
我在我的 UserAdmin 中定义了一个 save_model 来更改用户的对象级别权限。
remove_perm 和 assign_perm 是 django-guardian 的快捷方式,workingproject 是用户的 M2M 字段。
问题:选择不同的项目并保存权限时不会更改,但是第二次按“保存”按钮可以根据需要进行更改。我究竟做错了什么?
python - 根据 django-guardian 权限覆盖 get_queryset
我试图get_queryset
根据用户从 django Guardian 获得的对象权限进行覆盖,以便只有对象是可见的,用户有权访问这些对象。
可悲的是,这实际上什么都不做,并且所有项目,无论用户拥有什么权限,都是可见的。
django - 使用自定义用户类迁移到 django-guardian 权限
我正在尝试迁移我的模型以使用 Guardian 权限。在这一点上,我有:
我创建了一个添加新权限的迁移,在自定义迁移中,我尝试分配如下权限:
这失败了
guardian.exceptions.NotUserNorGroup: User/AnonymousUser or Group instance is required (got EmailUser object)
。
有没有更好/更合适的迁移到 Guardian 的方法?如果没有,我如何让它看到我的自定义用户类?
django - 如何自动将 CRUD 权限添加到 Meta 类中的 django 模型?
想象一下我有以下模型
我想要的是permission_generator()
生成元组
在某种程度上,我可以在所有模型中重复使用,而无需在每次定义新模型时重复自己。
如何实施这样的事情?