python - Pyramid 中的用户身份验证

标签 python authentication pyramid

我正在构建一个 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/

相关文章:

python - 在 .split() 之后保留标签

python - 列表的 get() 的惯用 python 等价物是什么?

ruby-on-rails - Ruby on Rails Devise,身份验证失败时如何更改登录路径?

javascript - 错误 : The reply URL specified in the request does not match the reply URLs configured for the application

python - 计算 Pandas 中每个 DataFrame 列中的部分匹配

python - 托管用于下载 Python Tornado 的静态文件

eclipse - GitLab + Eclipse + SSH - "Auth failed"或 "cannot open git-upload-pack"

python - 我可以在另一个变色龙模板中嵌套多个模板对象吗?

python - 未找到“pyramid-debugtoolbar”分布并且是必需的

python - 将 gevent 与 Pyramid 结合使用