首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于基于权限的web应用来说,Django是个不错的选择吗?

对于基于权限的web应用来说,Django是个不错的选择吗?
EN

Stack Overflow用户
提问于 2008-10-23 23:50:16
回答 6查看 8.1K关注 0票数 14

我已经探索Django的细节大约一周了,我喜欢我所看到的。但是我发现了一些..。与CRUD接口权限的细粒度控制相关的负性。

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

我完全没有做过Django开发,否则我可能会有一个更好的想法,知道这是否可以工作。如果生成的管理界面对这个项目没有用处,我可能不会使用Django -但正如我所说的,它严重依赖于细粒度的自定义权限。

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

更新一:我想使用管理应用程序来最大限度地减少生成CRUD界面的重复,所以我认为它是必须的。

更新二:

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

一个客户端可以属于一个或多个“商店”。全职员工应该只能编辑他们商店中的客户(即使他们属于另一个商店)。但是,他们不应该能够查看/编辑其他商店中的客户端。临时员工应该只能根据他们被登记的商店来查看客户(或者如果临时员工作为商店用户登录-更有可能)。

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

高级管理人员应该能够编辑所有员工并授予低于他们自己的权限。

在阅读django文档后,它显示您不能(自动地)为组的子集设置权限。只有整个团队。为此目的模拟您自己的权限是否足够简单?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2008-10-25 23:49:42

如果我没看错您更新的需求,我认为Django现有的身份验证系统是不够的。听起来你需要一个全功能的ACL系统。

这个话题已经提过很多次了。试着在django+acl上搜索一下。

随机抽样。

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

在djngoproject.org上有一张新的门票,这可能很有趣:

  • http://code.djangoproject.com/ticket/9444

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

  • http://dumpz.org/274/
  • http://dumpz.org/273/ models.py signals.py

..。但是这里没有任何文档。

祝好运!

票数 8
EN

Stack Overflow用户

发布于 2008-10-24 01:58:34

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

每个用户都有一组权限和组成员身份。单个用户可以拥有单独的权限。并且他们从他们的组成员那里继承权限。

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

如果这对你来说还不够,Profile add-on为你提供了更多的选项来定义“用户”及其能力、权限、角色、职责等。

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

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

Django的默认权限是模型访问权限,而不是模型中的行访问权限。另一方面,您的问题涉及几个模型中的行子集: Client、Store、Employee、Manager。

在这些项目中,您将需要一组基本的FK,并需要一些过滤器来设置行的子集。对于默认的管理页面,您可能无法做到这一点。您可能需要自己的admin版本才能使用专门的过滤器。

如果你不能使用Django权限系统做到这一点,你应该重新考虑你的用例。我是认真的。

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

票数 4
EN

Stack Overflow用户

发布于 2008-10-24 00:06:33

ModelAdmin对象具有has_add_permissionhas_change_permissionhas_delete_permissionqueryset方法,这些方法可用于围绕登录用户可以查看和修改的内容实施权限-您可以创建一个子类,使用这些子类来实施您想要实现的任何权限,并使用您的子类向admin应用程序注册所有模型。

然而,这完全取决于您的权限系统将如何工作-细粒度权限的确切要求是什么?您越是偏离admin应用程序的设计目标,它需要做的工作就越多,但是其中有很多钩子,您可以使用它们来实现您的自定义需求。这里有一个blog post from Luke Plant,它给出了一些示例,您可以在不深入挖掘的情况下进行一些微调。

它一定要基于admin应用程序吗?Generic viewsModelForms可以处理实现CRUD时涉及到的许多繁琐的部分,所以be wary避免过于专注于定制admin --从专注于admin应用程序开始,以及它可以做什么和不能做什么,这几乎是Django的传统,最初的想法是你再也不用写任何代码了;)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/232008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档