【问题标题】:Migrate Plone users and groups to relational data将 Plone 用户和组迁移到关系数据
【发布时间】:2015-03-04 15:24:59
【问题描述】:

我有一个 Plone 4 站点,其中包含许多存储在 ZODB 中的用户和组。随着时间的推移,我们添加了一些使用关系数据的功能(在 PostgreSQL 数据库中);有些表的字段包含用户或组 ID。

但是,目前用户和组是在 ZODB 而不是 RDB 中定义的,因此我们这里没有适当的外键。因此,显而易见的想法是将用户和组数据迁移到 RDB——至少是那些被 Plone 站点使用的人;我认为紧急用户需要例外(但无论如何,这些用户都不是任何组的成员)。

这是一件好事吗?

是否有理由只进行部分操作,或者我应该转移包括群组成员在内的所有内容? (由于成员资格存储为包含组的用户(和/或组)列表,我可以想象一个反向表,其中包含用户所属的所有组,并由触发器函数维护。)

有什么特殊的工具可以使用吗?

谢谢!

【问题讨论】:

    标签: plone plone-4.x


    【解决方案1】:

    恕我直言,它基于您想要实现的目标。在 Plone 中,您有 PAS,所以从技术上讲,将用户、组和用户组关系放在哪里并不重要。

    您可以将用户/组存储在:

    还有很多其他的 AUTH 插件,比如 RPX、Goolge+ 等。

    您可以通过 PAS 启用、禁用和修改每个插件的行为。

    不使用 Plone 用户有意义吗?

    当然,如果您想共享用户凭据(例如LDAP),或者如果您需要其他应用程序中的用户信息等。

    迁移

    如果您使用的 PAS 插件支持“属性”和“用户枚举”,应该非常简单。

    从一个插件中获取数据,然后使用一个简单的 python 脚本将数据放入另一个插件中。两者都支持相同的 API。

    【讨论】:

    • 我认为 SQLAlchemy 解决方案是我最好的选择,谢谢。我希望我能够在构建中配置数据库名称,这样我就可以在本地复制具有独立 RDB 的实例,而无需每次都使用 ZMI ...
    【解决方案2】:

    你要找的工具是https://pypi.python.org/pypi/pas.plugins.sqlalchemy/0.3

    我在一个门户网站中使用了它,在该门户网站中,用户与新闻通讯系统“共享”。 我有 200 个用户,还有任何问题。

    我认为将用户存储在外部数据库而不是 zodb/plone 中的唯一“充分理由”是在像我这样的用例中。

    你有没有想过“扩展”克隆用户(例如https://plone.org/products/collective.examples.userdata)?使用 plone.api,您可以轻松地在代码中操作用户的属性。

    【讨论】:

    • 另一个很好的理由是如果你在关系表中引用用户和组 id,就像我的例子一样......用户模式的简单操作很好,但在我的在这种情况下,由于缺乏对用户和组数据的关系访问,已经完成了很多愚蠢的编程。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    • 2017-11-13
    • 2018-10-27
    • 1970-01-01
    • 2012-01-23
    相关资源
    最近更新 更多