python - 根据用户权限和数据库值改变查询集的 Django 最佳实践
问题描述
我是 Django 新手,只是想找出实现某些业务逻辑的最佳方法。
我代表对多层建筑物中 AV 设备的访问。每层楼由单独的租户租用。每个租户都有一个或多个用户,这些用户可以访问楼层上的一个或多个 AV 设备。有一个租户管理员负责定义每个租户的用户及其设备。
我有三个角色——超级用户、租户管理员和租户用户。
我在数据库中有一组表,它们定义了楼层、楼层上的 AV 对象以及哪些租户可以访问哪些对象。Django 中的这个管理员工作正常。
我现在想在一个简单的前端显示它,以便可以进行以下操作:
- 超级用户 - 查看每个楼层,然后可以查看选定楼层上的设备并操作它们
- 租户管理员 - 只看到他们的楼层并且可以操作他们楼层上的所有设备
- 租户用户 - 只看到他们被分配访问权限的楼层和设备
在我看来,这一切都可以在一个模板中完成,并带有一些基于视图的逻辑来获取数据。
第一个问题是确定要在视图中生成的正确查询集的最佳方法是什么?我需要同时访问用户权限,然后根据用户类型及其 PK 更改“WHERE”。
第二个问题是如何防止对 AV 资源的非法访问。我不希望有人破解 URL 或 POST 对象以允许他们访问他们不允许访问的对象。因此,必须对用户进行身份验证(这很好),然后检查 PK 以确保该用户可以访问数据库中的对象。
这样做的最佳方法是什么?我只是被用户烫发所吸引,但这似乎是错误的方式。
希望这是有道理的,TIA!
解决方案
推荐阅读
- java - java.lang.IllegalArgumentException:在 okhttp3.Headers$Builder.checkNameAndValue
- python - VSCode Django 导入警告
- html - IE 的 object-fit 替代方案,用于具有 100% 宽度和设置高度的视频
- python - 水平移动 Python Turtle 而不改变标题
- ios - 两个 UIViewController 之间的 UIPageViewController
- javascript - 使用 ES6 编写的 npm 模块和 react-scripts
- delphi - 检查时间段是否重叠
- typescript - 是否有任何其他语言支持 Typescript 的映射类型和条件类型功能?
- react-native - 为什么我的变量没有在 React Native 中正确传递?
- postgresql - PGAdmin / Postgres:无法将时间戳数据写入 Postgres (2018-04-18 05:40:28)