将 Plone 用户和组迁移到关系数据
Migrate Plone users and groups to relational data
我有一个 Plone 4 站点,其中包含许多存储在 ZODB 中的用户和组。随着时间的推移,我们添加了一些使用关系数据(在 PostgreSQL 数据库中)的功能;一些 table 具有包含用户或组 ID 的字段。
但是,目前用户和组是在 ZODB 而不是 RDB 中定义的,所以我们这里没有合适的外键。因此,显而易见的想法是将用户和组数据迁移到 RDB - 那些 who/which 至少被 Plone 站点使用;我假设紧急用户需要是一个例外(但无论如何他们都不是任何组的成员)。
这是一件好事吗?
是否有理由只做部分,还是我应该转让包括群组成员资格在内的所有内容? (由于成员资格存储为包含组的用户列表(and/or 组),我可以想象一个反向 table 包含用户所属的所有组,并由触发函数维护.)
有什么特殊的工具可以使用吗?
谢谢!
您要找的工具是https://pypi.python.org/pypi/pas.plugins.sqlalchemy/0.3
我已经在用户 "shared" 使用时事通讯系统的门户网站中使用了它。
我有 200 个用户和任何问题。
我认为唯一 "good reason" 将用户存储在外部数据库中而不是 zodb/plone 是在像我这样的用例中。
您是否考虑过 "extend" 克隆用户(例如 https://plone.org/products/collective.examples.userdata)?使用 plone.api,您可以轻松地在代码中操纵用户的属性。
恕我直言,这取决于您想要实现的目标。在 Plone 中你有 PAS,所以从技术上讲,你把用户、组和用户组关系放在哪里并不重要。
您可以将 users/groups 存储在:
- Plone(默认)
- SQL - pas.plugins.sqlalchemy
- LDAP/AD - Products.PloneLDAP
还有很多其他的 AUTH 插件,比如 RPX、Goolge+ 等
您可以通过 PAS 启用、禁用和修改每个插件的行为。
不使用 Plone 用户有意义吗?
当然,如果你想共享用户凭证(例如LDAP),或者如果你需要其他应用程序中的用户信息等。
迁移
如果您使用的 PAS 插件支持 "Properties" 和 "User enumeration",应该会很简单。
从一个插件获取数据,然后使用简单的 python 脚本将数据放入另一个插件。两者都支持相同的API。
我有一个 Plone 4 站点,其中包含许多存储在 ZODB 中的用户和组。随着时间的推移,我们添加了一些使用关系数据(在 PostgreSQL 数据库中)的功能;一些 table 具有包含用户或组 ID 的字段。
但是,目前用户和组是在 ZODB 而不是 RDB 中定义的,所以我们这里没有合适的外键。因此,显而易见的想法是将用户和组数据迁移到 RDB - 那些 who/which 至少被 Plone 站点使用;我假设紧急用户需要是一个例外(但无论如何他们都不是任何组的成员)。
这是一件好事吗?
是否有理由只做部分,还是我应该转让包括群组成员资格在内的所有内容? (由于成员资格存储为包含组的用户列表(and/or 组),我可以想象一个反向 table 包含用户所属的所有组,并由触发函数维护.)
有什么特殊的工具可以使用吗?
谢谢!
您要找的工具是https://pypi.python.org/pypi/pas.plugins.sqlalchemy/0.3
我已经在用户 "shared" 使用时事通讯系统的门户网站中使用了它。 我有 200 个用户和任何问题。
我认为唯一 "good reason" 将用户存储在外部数据库中而不是 zodb/plone 是在像我这样的用例中。
您是否考虑过 "extend" 克隆用户(例如 https://plone.org/products/collective.examples.userdata)?使用 plone.api,您可以轻松地在代码中操纵用户的属性。
恕我直言,这取决于您想要实现的目标。在 Plone 中你有 PAS,所以从技术上讲,你把用户、组和用户组关系放在哪里并不重要。
您可以将 users/groups 存储在:
- Plone(默认)
- SQL - pas.plugins.sqlalchemy
- LDAP/AD - Products.PloneLDAP
还有很多其他的 AUTH 插件,比如 RPX、Goolge+ 等
您可以通过 PAS 启用、禁用和修改每个插件的行为。
不使用 Plone 用户有意义吗?
当然,如果你想共享用户凭证(例如LDAP),或者如果你需要其他应用程序中的用户信息等。
迁移
如果您使用的 PAS 插件支持 "Properties" 和 "User enumeration",应该会很简单。
从一个插件获取数据,然后使用简单的 python 脚本将数据放入另一个插件。两者都支持相同的API。