我有一个Plone 4站点,它包含许多存储在ZODB中的用户和组。随着时间的推移,我们添加了一些使用关系数据的功能(在PostgreSQL数据库中);有些表具有包含用户或组id的字段。
然而,目前用户和组是在ZODB中定义的,而不是在RDB中,所以我们在这里没有合适的外键。因此,显而易见的想法是将用户和组数据迁移到RDB——至少那些被Plone站点使用的数据;我认为紧急用户需要是一个例外(但他们无论如何都不是任何组的成员)。
这样做是件好事吗?
有没有理由只做一部分,或者我应该转移包括团体会员在内的一切?(由于成员资格存储为包含组的用户(和/或组)列表,我可以想象一个反向表,它包含用户所属的所有组,并由触发器函数维护。)
有什么特殊的工具可以用吗?
谢谢!
imho它基于您想要实现的目标。在Plone中,你有PAS,所以从技术上讲,把用户、组和用户-组关系放在哪里并不重要。
您可以将用户/组存储在:中
- Plone(默认)
- SQL-pas.plugins.qlalchemy
- LDAP/AD-产品PloneLDAP
AUTH还有许多其他插件,如RPX、Goolge+等。
您可以通过PAS启用、禁用和修改每个插件的行为。
不使用Plone用户有意义吗
当然,如果你想共享用户凭据(例如LDAP),或者如果你需要其他应用程序中的用户信息,等等。
迁移
如果您使用的PAS插件支持"属性"one_answers"用户枚举",那么应该非常简单。
从一个插件中获取数据,并使用简单的python脚本将数据放入另一个插件。两者都支持相同的API。
您要查找的工具是https://pypi.python.org/pypi/pas.plugins.sqlalchemy/0.3
我曾在一个门户网站中使用过这一点,在该门户网站上,用户可以与时事通讯系统"共享"。我有200个用户,还有任何问题。
我认为将用户存储在外部数据库而不是zodb/plone中的唯一"好理由"是在像我这样的用例中。
你有没有想过"扩展"plone用户(例如。https://plone.org/products/collective.examples.userdata)?使用plone.api,您可以在代码中轻松地操作用户的属性。