最近我正在做一个项目,我需要应用基于角色的访问控制(RBAC)类似AWS IAM的东西。 Django 已经拥有群组和权限。我可以创建一个组并在该组中添加用户。然后该组中的用户可以访问资源。但是我对该解决方案有疑问。在 AWS IAM 中,用户可以登录同一个账户,而不是不同的账户。我如何实现与 aws 相同的功能。我不想使用像 aws 这样的帐户 ID,用户可以使用他们的电子邮件/电话和密码登录。我的一些模型使用了一个字段 created_by 与 user 的关系。在我看来,我的查询集是这样的
MyModel.objects.filter(created_by=request.user)
。问题是假设我授予 user1 访问 MyModel 的权限。 user1 没有自己创建的任何对象。他需要查看 root 用户 创建的对象。还有一个问题是 root 用户不属于任何组。
我尝试使用 django 提供的组和权限。我还自定义了 django Group 模型添加一个字段 created_by 来跟踪组所有者。但是如果 user1 创建一个组并且组所有者是 user1 怎么办,我已经失去了对 root 用户 的跟踪。我不需要实施对象级权限,但将来可能需要。每次当前用户是否能够执行此操作时,我还必须检查一件事。如果我在视图上检查它或者我制作一个可以检查用户权限的自定义中间件是最好的吗?
我不需要实现对象级权限,但将来可能需要它。
查看 https://en.wikipedia.org/wiki/Relationship-based_access_control。这为您提供了细粒度的权限。您可以使用多种解决方案,包括开源和非开源。
如果我在视图上检查它或者我制作一个可以检查用户权限的自定义中间件是最好的吗?
后端(例如中间件)应始终在访问资源之前检查正确的权限。