基于 SQLAlchemy 的 PAS 用户/组/道具存储。
项目描述
SQLAlchemy PAS 插件
这个包提供了一个基于 SQLAlchemy 数据库抽象层的 Zope 2 PAS 插件实现(Pluggable Authentication Service)。
它允许您使用 SQL 数据库存储和查询用户和组。
这个包取代了SQLPASPlugin。产品。从技术上讲,它是该代码库的一个分支。一些测试已被重写,但大多数都被保留。
虽然目前没有在稳定版本中提供,但它已用于生产(仅针对pysqlite和 PostgreSQL 数据库进行测试)。
设置
要使用数据库配置插件,请使用z3c.saconfig。在您的configure.zcml或您构建的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://localhost/pas" /> <session name="pas.plugins.sqlalchemy" engine="pas" /> </configure>
使用包含的 GenericSetup-profile 安装插件。请注意,表将在安装时自动创建。
您可以随时重新安装以创建不存在的表。请注意,卸载时会保留表。
来自 Plone 的配置
作为在 zcml 中指定数据库连接信息的替代方法,您可以使用collective.saconnect在plone 控制面板上配置您的连接。
通过将软件包添加到您的构建中来安装软件包,然后通过 Plone 的控制面板将附加组件安装在您的 plone 站点中。您现在有了一个新的控制面板,允许您创建和编辑数据库连接。
要使用通用设置添加连接,请将文件saconnections.xml添加到站点设置包的通用设置配置文件中,其中包含以下内容:
<?xml version="1.0"?>
<connections>
<connection
name="pas.plugins.sqlalchemy"
string="postgresql://USER:PASSWORD@localhost/DATABASE"
/>
</connections>
为了获得良好的性能,不要忘记在 ZMI 中启用缓存。
包描述中提供了更多信息。
自定义主体、用户和组模型
您可以为所有三个类别注册自己的基于 SQLAlchemy 的模型类。
所需的类接口(所需的方法和属性)在接口模块中描述。请注意,您可以简单地从实现所需接口的默认模型中继承。
可以在 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 的较新版本。
测试外部模型的配置。
学分
作者
洛基伯特<洛基@serverzen 。com > ServerZen 软件
Nate Aune < natea @ jazkarta 。com > Jazkarta
Stefan Eltzhofer <斯蒂芬. eletzhofer @ inquant 。德> InQuant
Malthe Borch < mborch @ gmail 。com >
贡献者
鲁达波尔图菲尔盖拉斯< rudazz @ gmail 。com >
丹尼尔努里 <丹尼尔. 努里@gmail 。com >
Dorneles Treméa< deo @ jarn . com > 的 Jarn
维切特·阿克曼< wichert @ wiggy 。辛普朗净>
Riccardo Lemmi < riccardo @reflab。它> Reflab Srl
德里克·布劳顿< auspex @pointerstop 。约>
Rigel Di Scala <zedr>
Sune Broendum Woeller < woeller @ headnet 。dk > Headnet Aps
赞助商
感谢 ChemIndustry.com Inc. 为 SQLPASPlugin 的开发提供资金
感谢 Statens Byggeforskninginstitut ( http://www.sbi.dk ) 赞助缓存支持。
感谢 Gis & Web Srl ( http://www.gisweb.it ) 对团体管理支持的赞助。
感谢 Ocean Tracking Network ( http://oceantrackingnetwork.org/ ) 添加组功能和迁移现有用户。
执照
GNU GPL v2(详见 LICENCE.txt)
变更日志
0.4.2 (2017-10-23)
MANIFEST 在 0.4.1 版中未修复(仍然是棕色包发布)[keul]
固定棕色袋子释放(再次)。[马尔蒂]
0.4.1 (2017-10-23)
固定棕色袋子释放。[马尔蒂]
0.4 (2016-03-31)
在 zmi [agitator] 中添加了指向缓存设置视图的链接
修复:getPropertiesForUser现在使用 principals _properties映射来映射到用于zope_id id 的列,这是需要的。[詹森]
不要期望在插件安装时配置数据库连接以便与collective.saconnect 配合使用。如果没有配置连接,也不要那么冗长。[詹森]
修复:用于安装和卸载的不同自定义设置卸载/安装标记 [jenses]
将安装配置文件的名称标准化为default。[詹森]
现代化:Pep8、Travis CI、……[jenses]
在 doChangeUser、doDeleteUser 和 allowPasswordSet 方法中使用 _get_principal_by_id 获取委托人 [gborelli]
使用 '__mapper__' 而不是 '__table__' 来检查列类型。它允许使用 polymorphic_identity [gborelli] 在另一个类中自定义用户模型
修复 getPropertiesForUser,如果主体不存在则返回 None [gborelli]
在更新其属性之前检查主体是否存在 [gborelli]
修复了 doSetProperty和setPropertiesForUser方法,以便它们接受通用主体,而不一定是插件主体类的实例。[马尔蒂]
将用户属性包装在一个实际可变的用户属性表中(它将更改写回插件)。以前,返回了一个可变的属性表,但这是不正确的,因为更改不会持久化。
虽然 PAS 接口指定应该为不可变结果返回 dict,但我们选择混合:不承诺可变性的 dict-aware 用户属性表。动机是可插入的身份验证服务仅支持属性值类型的选择列表,而不支持例如 Python 自己的日期和时间类。通过返回一个属性表,我们可以显式地提供一个模式,而不是强制身份验证服务“猜测”(推断)它。[马尔蒂]
0.3 (2011-10-13)
在setPropertiesForUser上触发IPropertiesUpdated(来自 PAS)事件, 以允许组件在更新用户属性时采取行动。[马尔蒂]
将 SVN 存储库(选择分支)合并到现有的 Github 存储库以整合改进。[马尔蒂]
为组添加标题和描述。
GetRolesForPrincipal 需要从请求中侦听 __ignore_group_roles__ 和 __ignore_direct_roles__ 以使用 plone 4。 GetRolesForPrincipal 需要默认考虑组角色。[新纽]
合并了分支的许多更改:wichert-flexible、wichert-flexible-pw-encryption、zedr-mysql-optimized、auspex。
0.3 版本与早期版本不兼容,升级将需要一些迁移(不包括在内)。[新纽]
将 user_id 和登录分开 - 就像在 PAS 中一样。(不完整?)[wichert]
重构用户、组和主体类,以实现组和用户之间更多的功能共享。[威彻特]
与 MySQL 兼容的 varchars 长度 [auspex, wichert, sunew, zedr]
清理属性 - 现在模型中只有克隆属性。如果您需要更多字段,请覆盖模型。[新纽]
密码和盐只读。[wichert,新]
删除 IUpdatePlugin 相关的东西。不曾用过。[威彻特]
通过虚线路径 zmi 属性使模型可配置。[威彻特]
还要使 Principal 类可配置。[新纽]
添加缺少的安全声明(与 PlonePAS 和 PluggableAuthService 中的相同方法匹配)。[新纽]
完全实现 IRoleAssignerPlugin:错过了 doRemoveRoleFromPrincipal。[新纽]
更多测试,通过 plone 4.0.7 的测试。[新纽]
0.2.1(未发布)
修复了一些测试。现在测试通过了 plone 4.0.7。[新纽]
在 UTF-8 和 unicode 之间进行转换。Plone 在内部使用 UTF-8,大多数 Python 部署将强制使用“ascii”编解码器,导致 unicode 解码错误。[mborch]
0.2(2009/7/17 发布)
将 'listed' 和 'ext_editor' 列类型更改为 'Integer' 匹配 Plone 模型。[塞莱茨]
0.1(2009/7/17 发布)
首次公开发布。
项目详情
pas.plugins.sqlalchemy -0.4.2.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | e1d662b4550c06c6e33b0081df35d8ad109d9290733ac0b431efa9c6cf54cd9e |
|
| MD5 | c06fdba69a307b1cc78b9381b31e403a |
|
| 布莱克2-256 | 110e9b5107219c2e3a996dcaa1a5507b2e73d7f8a10b54c88876c87545554d1a |