Django会成为基于权限的网络应用程序的不错选择吗?

Jos*_*ton 14 python django permissions

我一直在探索Django的细节大约一周,就像我看到的那样.然而,我对CRUD接口的权限的细粒度控制有一些消极性.

我写的是一个Intranet客户端管理网络应用程序.该组织大约有6层,我需要根据层限制对客户端组的访问.不断扩大.我有一个相当好的想法,我将如何做到这一点,但我不确定我是否能够很好地将它集成到预先构建的管理界面.

我完全没有Django开发,否则我可能会更好地了解这是否有效.如果生成的管理界面对这个项目没用,我可能不会使用Django - 但就像我说的那样,对细粒度的自定义权限有很大的依赖.

Django会让我构建自定义权限/规则并将其无缝集成到管理CRUD界面中吗?

更新一:我想使用管理员应用程序来最小化生成CRUD接口的重复,所以是的,我认为它是必须的.

更新二:

我想描述这个项目所需的权限.

客户可以属于一个或多个"商店".全职员工应该只能在他们的商店编辑客户(即使他们属于另一家商店).但是,他们不应该能够在另一家商店看到/编辑客户.Casuals应该只能根据他们的商店名称来查看客户(或者如果商店用户登录的是休闲商品 - 更有可能).

他们上面的管理人员需要能够看到他们管理的商店的所有员工,仅此而已.

高级管理层应该能够编辑所有员工并授予他们自己以下的权限.

阅读django文档后,它表示您不能(自动)为组的子集设置权限.只有整个团体.为此目的模拟自己的权限是否容易?

Pet*_*ell 8

如果我正确地阅读了更新的要求,我认为Django现有的auth系统就不够了.听起来你需要一个全面的ACL系统.

这个问题多次出现过.在django + acl上尝试使用Google搜索.

随机抽样......

几年前有一个夏天的代码项目,但我不确定他们到底在哪里.请参阅http://code.djangoproject.com/wiki/GenericAuthorization

djngoproject.org上有一张可能很有趣的新票:

dumpz.org上有一些有趣的代码片段:

......但是有零文档.

祝好运!


S.L*_*ott 5

Django 权限系统完全规则。每个模型都有一组默认的权限。您还可以向模型添加新权限。

每个用户都有一组权限以及组成员身份。个人用户可以拥有个人权限。他们从其组成员身份继承权限。

您的视图功能(和模板)可以轻松检查您需要使用的任何粒度级别是否存在这些权限。

如果这对您来说还不够,配置文件附加组件为您提供了更多选项来定义“用户”及其能力、权限、角色、职责等。

如果这对您来说还不够,您可以定义自己的身份验证方案。


重要的是不要尝试定义作为用户实际子集的组,而不是随意定义的头衔或角色。您永远不需要“为组的子集设置权限”。你需要有更小的团体。围绕人群子集定义的群体。

Django 的默认权限是围绕模型访问,而不是模型内的行访问。另一方面,您的问题与多个模型中的行子集有关:客户、商店、员工、经理。

您将需要这些项目中的一组基本 FK,以及一些用于对行进行子集化的过滤器。使用默认管理页面执行此操作可能会遇到困难。您可能需要自己的管理版本才能使用专门的过滤器。


如果您无法使用 Django 权限系统做到这一点,您应该重新考虑您的用例。严重地。

[然而,Django-REST 接口完全是另一头野兽,需要一些照顾和喂养。]