2011-10-17 30 views
41

我正在构建一个web应用程序,需要在Django和金字塔之间进行选择。我决定去金字塔。金字塔中的用户身份验证

我知道金字塔带有自己的认证/授权框架,看起来不错。但是我在金字塔的任何地方都没有看到用户/组/权限被定义的地方。在Django中,这些东西是免费的。

我正在使用SQLAlchemy并想知道是否有类似的用户/组/权限已经构建,我可以导入。我宁愿不自己定义这些对象/映射和密码哈希/盐度。

Django's definitions这些东西几乎是我所需要的。

任何人都可以指向我可以使用的东西吗?或者我需要推出自己的?

回答

62

金字塔有一个更灵活的认证系统。是的,如果你想要像Django的用户/组/权限概念那样简单,那么灵活性可能会很吓人。

金字塔没有“用户”对象,因为它没有关于如何存储数据或使用什么ORM的假设,因此没有像contrib.auth这样的东西。您需要使用一个库,例如cryptacular或passlib,在PYPI上找到这些密码。

至于金字塔的系统内的想要的用户/组/权限,这是通过定义一个具有__acl__映射组权限的RootFactory实现相当简单。权限被分配给视图,因此通常非常静态。如果你希望这些团体(金字塔称之为“校长”)是动态的,这也是可以实现的。

我建议看看金字塔wiki2 tutorial,以及shootout demo

如果您计划使用SQLAlchemy,还有一些第三方软件包用于协助金字塔内的授权。 apex是一个更完整的堆栈解决方案,并且ziggurat_foundations是SQLAlchemy上的一个较低层,可帮助您为应用程序设置用户和组。

你的问题是相当高的水平和授权是一个“难题”,所以我会在这里停止,并避免从金字塔教程已经存在的教程和资源反馈到几个第三方的例子。如果您有任何具体问题,请随时在另一个问题中提问。

+0

谢谢,这是很好的信息。我越看过django的实现(并且与您的repsonse一起),我越发现这个问题更多的是SQLAlchemy问题,因为任何'User'相关对象都需要绑定到SQLAlchemy。 – lostdorje

+2

感谢您参加枪战演示的指针。用完整的用户和组模型编写得很好,以及一整套测试。 –

+0

如果在身份验证方面有更多预构建的东西,即使它可以全部(或部分)被吹掉并替换为高级用户的自定义内容,也会很好。只要您记录需要针对自定义解决方案实施的操作,就可以拥有用户的概念,而无需假设存储系统。 –