Pyramid中的用户认证

42 投票
1 回答
12012 浏览
提问于 2025-04-17 04:28

我正在开发一个网页应用,需要在Django和Pyramid之间做选择。最后我决定使用Pyramid。

我了解到Pyramid有自己的一套用户认证和权限管理的框架,看起来不错。但是我在Pyramid中没有找到用户、用户组和权限的定义。在Django中,这些东西都是现成的。

我在使用SQLAlchemy,想知道是否有类似的用户、用户组和权限的功能可以直接导入。我不想自己去定义这些对象、映射关系以及密码的加密和处理。

Django对这些概念的定义基本上就是我需要的全部内容。

有没有人能给我指个方向,告诉我可以用什么?还是说我得自己来做这些?

1 个回答

66

Pyramid有一个非常灵活的认证系统。如果你想要像Django那样简单的用户/组/权限概念,灵活性可能会让你感到有点害怕。

Pyramid没有“用户”这个对象,因为它不对你如何存储数据或使用什么ORM做任何假设,所以你不会找到类似于contrib.auth的东西。你需要自己使用像cryptacular或passlib这样的库来对密码进行哈希和加盐,这两个库都可以在PYPI上找到。

如果你想在Pyramid的系统中实现用户/组/权限,这其实很简单。你只需要定义一个RootFactory,并设置一个__acl__,这个设置将组和权限进行映射。权限是分配给视图的,所以通常是比较固定的。如果你希望组(Pyramid称之为“principals”)是动态的,这也是可以做到的。

我建议你查看Pyramid的wiki2教程,还有shootout演示

如果你打算使用SQLAlchemy,还有一些第三方包可以帮助你进行授权。apex是一个更全面的解决方案,而ziggurat_foundations是一个在SQLAlchemy之上的低级别层,帮助你为应用程序设置用户和组。

你的问题比较高层次,而授权是一个“难题”,所以我就到这里,不想重复Pyramid教程和其他第三方示例中已经存在的内容。如果你有任何具体问题,请随时在另一个问题中提问。

撰写回答