Skip to main content

基于 SQLAlchemy 的 PAS 用户/组/道具存储。

项目描述

https://travis-ci.org/collective/pas.plugins.sqlalchemy.svg?branch=master https://coveralls.io/repos/collective/pas.plugins.sqlalchemy/badge.svg?branch=master&service=github

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 的较新版本。

  • 测试外部模型的配置。

学分

作者

贡献者

赞助商

执照

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]

  • 修复了 doSetPropertysetPropertiesForUser方法,以便它们接受通用主体,而不一定是插件主体类的实例。[马尔蒂]

  • 将用户属性包装在一个实际可变的用户属性表中(它将更改写回插件)。以前,返回了一个可变的属性表,但这是不正确的,因为更改不会持久化。

    虽然 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 (27.4 kB 查看哈希

已上传 source