金字塔中的用户身份验证

时间:2011-10-17 10:58:26

标签: python authentication pyramid

我正在构建一个webapp,需要在Django和Pyramid之间进行选择。我决定和金字塔一起去。

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

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

Django's definitions这些事情几乎就是我所需要的。

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

1 个答案:

答案 0 :(得分:64)

Pyramid具有更灵活的身份验证系统。是的,如果你想要像Django的用户/组/权限概念那样简单,那么灵活可能会让人感到恐惧。

Pyramid没有“User”对象,因为它没有假设您如何存储数据或使用的是什么ORM,因此没有像contrib.auth那样的东西。您需要使用诸如加密或passlib之类的库来自己散列/加密密码,这两个文件都可以在PYPI上找到。

至于想要Pyramid系统中的用户/组/权限,这可以通过定义具有__acl__的RootFactory来实现,该RootFactory将组映射到权限。权限分配给视图,因此通常非常静态。如果您希望这些组(Pyramid称之为“校长”)是动态的,也是可以实现的。

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

如果您计划使用SQLAlchemy,还有一些第三方软件包可以帮助在Pyramid中进行授权。 apex是一个更完整的堆栈解决方案,而ziggurat_foundations是SQLAlchemy上方的低级层,可帮助您为应用程序设置用户和组。

您的问题相当高,授权是一个“难题”,所以我会停在这里,避免将Pyramid教程中已经存在的教程和资源反复出现在几个第三方示例中。如果您有任何具体问题,请随时向其他问题询问。