我正在构建一个 web 应用程序,需要在 Django 和 Pyramid 之间进行选择。我决定选择 Pyramid。
我了解 Pyramid 带有自己的身份验证/授权框架,看起来不错。但是我在 Pyramid 中没有看到定义用户/组/权限的任何地方。在 Django 中,这些东西都是免费的。
我正在使用 SQLAlchemy,想知道是否已经构建了可以导入的类似用户/组/权限。我宁愿自己不定义这些对象/映射和密码的哈希/加盐。
Django's definitions这些东西几乎就是我所需要的。
谁能指出我可以使用的东西?还是我需要自己动手?
最佳答案
Pyramid 具有更加灵活的身份验证系统。是的,如果你想要像 Django 的用户/组/权限概念这样简单的东西,那么灵活可能会很可怕。
Pyramid 没有“用户”对象,因为它不会假设您如何存储数据或使用什么 ORM,因此没有像 contrib.auth 这样适合您的东西。您需要使用 cryptacular 或 passlib 等库自己对密码进行散列/加盐,两者都可以在 PYPI 上找到。
就希望 Pyramid 系统中的用户/组/权限而言,这很容易通过定义一个具有 __acl__
的 RootFactory 来实现,该 __acl__
将组映射到权限。权限分配给 View ,因此通常是静态的。如果您希望小组(Pyramid 称之为“主体”)是动态的,这也是可以实现的。
我建议看看 Pyramid wiki2 tutorial ,以及 shootout demo .
如果您打算使用 SQLAlchemy,还有几个第三方包可用于协助 Pyramid 中的授权。 apex是更全栈的解决方案,ziggurat_foundations是 SQLAlchemy 之上的一个较低级别的层,可帮助您为应用程序设置用户和组。
您的问题相当高级,授权是一个“难题”,因此我将在此停止,避免将 Pyramid 教程中已经存在的教程和资源重复到几个第三方示例中。如果您有任何具体问题,请随时提出其他问题。
关于python - Pyramid 中的用户身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7792769/