1

我正在建立一个网站,该网站将在不久的将来取代现有的网站。现有网站包含 aprox。我需要将 300 个用户“导入”到复合的外联网模块(我已购买)。

有没有办法批量创建用户到外联网模块?

4

2 回答 2

0

谢谢你。现在可以了。我以编程方式导入了用户。我在 Visual Studio 中打开了复合解决方案并添加了一个 aspx 页面。这是后面的代码。

using System;
using System.Collections.Generic;
using System.IO;
using Composite.Community.Extranet;
using Composite.Community.Extranet.Data;

public partial class ImportUsers : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string path = Server.MapPath("UsersToImport.csv");
        StreamReader _streamReader = new StreamReader(path);

        IList<Guid> userIds = new List<Guid>();
        string line;
        while ((line = _streamReader.ReadLine()) != null)
        {
            string[] fields = line.Split(',');
            IExtranetUser extranetUser = new ExtranetUser();
            extranetUser.Name = fields[0];
            extranetUser.UserName = fields[1];
            extranetUser.Email = fields[2];
            extranetUser.IsApproved = true;

            IExtranetUser addedUser = ExtranetFacade.AddNewUser("Default", extranetUser);
            userIds.Add(addedUser.Id);

            ExtranetFacade.SetUsersForGroup("Default", new Guid("bc728100-e28e-4135-a14c-bead6e0b9b00"), userIds);
            Response.Write(string.Format("User: {0} added at {1}", addedUser.UserName, addedUser.CreationDate));
        }
    }
}
于 2013-01-17T06:27:44.187 回答
0

是的,您可以导入现有的用户数据库。您可以通过编写脚本并在您的网站上执行该脚本来执行此操作,也可以通过直接操作底层 SQL 表/XML 文件(取决于您用于存储复合 C1 数据的内容)来执行此操作。您还可以构建一个提供程序,将您现有的用户数据库与 Composite C1 Extranet 链接起来。

以编程方式导入用户:对于脚本方法,请参阅http://docs.composite.net/Packages/Community/Extranet/CompositeCommunityExtranetDeveloperGuide/Using-Extranet-Facade-Methods上描述的 AddNewUser 等方法

您可以将此脚本编写为在 Composite C1 网站上执行的 Web 服务、aspx 页面或类似内容。

如果您在默认设置中运行 Extranet,providerName则应为“默认”。

直接操作物理数据存储:这取决于您运行的数据存储。我建议您添加所需的组和测试用户,以帮助您在查看基础 XML 文件/SQL 表时识别数据。

  • 如果您在 XML(默认)上运行,您应该关注位于文件夹 ~/App_Data/Composite/DataStores 中名为 Composite.Community.Extranet.DefaultProvider.DataTypes.DefaultProvider*.xml 的文件。有3个sush文件,一个用于组,一个用于用户,一个用于用户和组之间的关系。

  • 如果您在 SQL Server 上运行,则应关注名为 Composite.Community.Extranet.DefaultProvider.DataTypes.DefaultProvider* 的 3 个表

在这两种情况下,您都需要将新条目添加到 User 表/xml 文件并将组关系匹配到 GroupUser 表/xml 文件。当您添加一个用户时,您提供一个唯一 ID,并且您可以重复使用此 ID 在 GroupUser 中注册用户。

完成更改后,您可以使用工具 | 强制 Composite C1 重新加载。在 C1 控制台中重新启动服务器命令。如果您在进行更改之前备份文件/表,您可以通过恢复备份轻松恢复(以防您需要重新开始)。

编写用户/组提供程序:如果您的用户数据在外部存储中并且您希望将其保留在那里,您还可以通过创建自定义提供程序在此现有用户存储和 Composite C1 Extranet 之间架起一座桥梁。如果这是相关的,请参阅http://docs.composite.net/Packages/Community/Extranet/CompositeCommunityExtranetDeveloperGuide/Writing-Custom-Extranet-Providers

于 2013-01-07T11:19:02.097 回答