基于SQLAlchemy的PAS用户/组/属性存储。
项目描述
SQLAlchemy PAS插件
本软件包提供了一个基于SQLAlchemy数据库抽象层的Zope 2 PAS插件实现(可插拔认证服务)。
它允许您使用SQL数据库存储和查询用户和组。
本软件包替换了 SQLPASPlugin 产品。从技术上讲,它是那个代码库的分支。一些测试已被重写,但大多数已被保留。
尽管目前没有提供稳定版本,但它已在生产中使用(仅针对 pysqlite 和 PostgreSQL 数据库进行了测试)。
设置
要配置数据库插件,请使用 z3c.saconfig。在您的 configure.zcml 或在构建out中 plone.recipe.zope2instance 脚本的 zcml-additional 参数中定义一个名为的域会话 pas.plugins.sqlalchemy。
示例
<configure xmlns="http://namespaces.zope.org/db"> <include package="z3c.saconfig" file="meta.zcml"/> <engine name="pas" url="postgresql://#/pas" /> <session name="pas.plugins.sqlalchemy" engine="pas" /> </configure>
使用附带的 GenericSetup-profile 安装插件。请注意,在安装过程中将自动创建表。
您可以在任何时候重新安装以创建不存在的表。请注意,在卸载时保留表。
从 Plone 配置
作为在 zcml 中指定数据库连接信息的替代方案,您可以使用 collective.saconnect 在 plone 控制面板上使连接可配置。
通过将其添加到构建out并使用 Plone 的控制面板安装附加组件来安装该包。现在您有一个新的控制面板,允许您创建和编辑数据库连接。
要使用通用设置添加连接,请将文件 saconnections.xml 添加到您站点设置包的通用设置配置文件中,内容如下
<?xml version="1.0"?> <connections> <connection name="pas.plugins.sqlalchemy" string="postgresql://USER:PASSWORD@localhost/DATABASE" /> </connections>
为了良好的性能,不要忘记在 ZMI 中启用缓存。
更多详细信息请参阅包描述。
自定义主体、用户和组模型
您可以为这三个类别注册自己的基于 SQLAlchemy 的模型类。
所需类接口(所需方法和属性)在 interfaces 模块中描述。请注意,您可以直接从实现所需接口的默认模型继承。
设置可在 ZMI 中访问。您还可以使用自定义设置处理程序。
示例
def setup_pas_plugin(self): pas = self.acl_users plugin = pas['sql'] plugin.manage_changeProperties( user_model="my_package.model.User", principal_model="my_package.model.Principal", group_model="my_package.model.Group" )
您可能需要确保插件优先级高于默认插件(通常是基于 ZODB 的)。
愿望清单
这些项目在待办事项列表上
仅发布安全。
实现接口的审查 - 实现是否完整?
处理组标题、描述和电子邮件,以匹配 Plone 的新版本。
外部模型配置的测试。
致谢
作者
Rocky Burt <rocky@serverzen.com> of ServerZen Software
Nate Aune <natea@jazkarta.com> of Jazkarta
Stefan Eletzhofer <stefan.eletzhofer@inquant.de> of InQuant
Malthe Borch <mborch@gmail.com>
贡献者
Ruda Porto Filgueiras <rudazz@gmail.com>
Daniel Nouri <daniel.nouri@gmail.com>
Dorneles Treméa <deo@jarn.com> of Jarn
Wichert Akkerman <wichert@wiggy.net> of Simplon
Riccardo Lemmi <riccardo@reflab.it> of Reflab Srl
Derek Broughton <auspex@pointerstop.ca>
Rigel Di Scala <zedr>
Sune Broendum Woeller <woeller@headnet.dk> of Headnet Aps
赞助商
感谢 ChemIndustry.com Inc. 对 SQLPASPlugin 开发的资助
感谢 Statens Byggeforskninginstitut (http://www.sbi.dk) 对缓存支持的赞助。
感谢 Gis & Web S.r.l. (http://www.gisweb.it) 对组管理支持的赞助。
感谢海洋追踪网络(http://oceantrackingnetwork.org/)添加了群组功能和现有用户的迁移。
许可证
GNU GPL v2(详细信息请见LICENCE.txt)
变更日志
0.4.2 (2017-10-23)
版本0.4.1中未修复MANIFEST(仍为棕色袋发布)[keul]
修复了棕色袋发布。[malthe]
0.4.1 (2017-10-23)
修复了棕色袋发布。[malthe]
0.4 (2016-03-31)
在zmi中添加了缓存设置视图的链接。[agitator]
修复:getPropertiesForUser现在使用principal _properties映射来映射用于zope_id的列,这是必需的。[jensens]
在插件安装时不要期望配置好的数据库连接,以与collective.saconnect良好协作。如果未配置连接,请尽量减少冗余。[jensens]
修复:不同自定义设置的安装和卸载标记。[jensens]
将安装配置文件的标准名称更改为default。[jensens]
现代化:Pep8,Travis CI,……[jensens]
在doChangeUser,doDeleteUser和allowPasswordSet方法中使用_get_principal_by_id来获取principal。[gborelli]
使用‘__mapper__’而不是‘__table__’来检查列类型。这允许在另一个类中通过polymorphic_identity自定义用户模型。[gborelli]
修复getPropertiesForUser,如果principal不存在则返回None。[gborelli]
在更新其属性之前检查principal是否存在。[gborelli]
修复方法doSetProperty和setPropertiesForUser,使它们接受一个通用principal,而不仅仅是插件principal类的实例。[malthe]
将用户属性包装在一个实际上可变用户属性表中(它将更改写回插件)。以前,返回了一个可变属性表,但这是不正确的,因为更改不会被持久化。
虽然PAS接口指定对于不可变结果应返回一个字典,但我们选择了一种混合模式:一个对字典有意识的用户属性表,它不承诺可变性。动机是可插拔认证服务仅支持一组有限的属性值类型,例如Python自己的日期和时间类。通过返回属性表,我们可以显式提供模式,而不必强制认证服务“猜测”(推断)它。[malthe]
0.3 (2011-10-13)
在setPropertiesForUser上触发来自PAS的IPropertiesUpdated事件,以允许组件在用户属性更新时采取行动。[malthe]
将SVN存储库(选择分支)合并到现有的GitHub存储库中,以巩固改进。[malthe]
为组添加标题和描述。
GetRolesForPrincipal需要监听请求中的__ignore_group_roles__和__ignore_direct_roles__,才能与Plone 4一起工作。默认情况下,GetRolesForPrincipal需要考虑组角色。[sunew]
合并了从分支中提出的许多更改:wichert-flexible,wichert-flexible-pw-encryption,zedr-mysql-optimized,auspex。[sunew]
版本0.3与早期版本不兼容,升级将需要一些迁移(不包括)。[sunew]
将user_id和login分开 - 如在PAS中。(未完成?)[wichert]
重构用户、组和principal类,以使组与用户之间能够共享更多功能。[wichert]
varchars的长度与MySQL兼容。[auspex,wichert,sunew,zedr]
清理了属性 - 现在模型中只有plone属性。如果需要更多字段,请覆盖模型。[sunew]
密码和salt为只读。[wichert,sunew]
删除与IUpdatePlugin相关的功能。未使用。[wichert]
通过点路径zmi属性配置模型。[wichert]
同时使Principal类可配置。[sunew]
添加缺少的安全声明(与PlonePAS和PluggableAuthService中相同方法的安全声明相匹配)。[sunew]
完全实现 IRoleAssignerPlugin:遗漏了 doRemoveRoleFromPrincipal 方法。[sunew]
增加了更多测试,plone 4.0.7 上的测试通过。[sunew]
0.2.1(未发布)
修复了一些测试。现在在 plone 4.0.7 上测试通过。[sunew]
转换为 UTF-8 和 Unicode。Plone 在内部使用 UTF-8,大多数 Python 部署将使用 'ascii' 编码强制转换,导致 Unicode 解码错误。[mborch]
0.2(发布于 2009/7/17)
将 'listed' 和 'ext_editor' 列类型更改为 'Integer' 以匹配 Plone 模型。[seletz]
0.1(发布于 2009/7/17)
首次公开发布。
项目详情
pas.plugins.sqlalchemy-0.4.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e1d662b4550c06c6e33b0081df35d8ad109d9290733ac0b431efa9c6cf54cd9e |
|
MD5 | c06fdba69a307b1cc78b9381b31e403a |
|
BLAKE2b-256 | 110e9b5107219c2e3a996dcaa1a5507b2e73d7f8a10b54c88876c87545554d1a |