【问题标题】:asp.net Membership Get Multiple Users By IDasp.net Membership 通过 ID 获取多个用户
【发布时间】:2014-10-09 05:30:59
【问题描述】:

我需要在管理页面上显示 Sitecore 7.2 Web 应用的多个用户。要显示的用户的 ID 位于与核心数据库分开的数据库中(松散的关系,没有键约束)。除了将跟踪这些用户 id 的表移动到核心数据库中之外,有没有一种通过 id 获取多个用户的好方法?我只看到获取一个用户或所有用户的方法。

【问题讨论】:

  • 据我了解,您没有在 Core 数据库上配置 ASP.Net Membership 提供程序。转移一些表如何帮助您通过 id 获得多个用户?
  • 我可以将这个额外的表添加到核心数据库中,与包含用户的表建立外键关系,以及它上面的病态实体框架。我想我可能会接受 Bryan 的建议并尝试创建自己的提供程序。

标签: c# asp.net-membership sitecore sitecore7 sitecore7.2


【解决方案1】:

“多个”是多少?如果它在 2 到 100 之间,我会写一个小工具项,它会获取 ID,然后一次加载一个。

如果您真的需要一次加载 100-1000 个用户...您可能需要创建自己的提供程序。 Sitecore 的用户 API 只是标准 ASP.NET 成员资格的一个瘦包装器。它使用了一个相当简单的提供者模型。

如果您想在任何类型的性能关键环境中访问用户配置文件,您绝对必须提供自己的系统。默认系统非常慢,主要是由于 SQL 架构非常奇怪。

【讨论】:

    【解决方案2】:

    您将需要使用获取所有用户的方法并通过您的 ID 列表过滤(我假设您的意思是用户名)。

    using System.Web.Security;
    
    string[] userIds = { "username1", "username2", "username3" };
    
    var users = Membership.GetAllUsers()
        .Cast<MembershipUser>()
        .Where(x => userIds.Contains(x.UserName));
    

    【讨论】:

    • 我猜 Frontenderman 已经能够获取所有用户了。 “我只看到获取一个用户或所有用户的方法。”
    • 获取所有用户的方法只有一个。这就是为什么我要展示如何过滤它们。
    • 我会避免这样做。如果您拥有超过几千名用户,性能将使其成为不可能。
    猜你喜欢
    • 2012-10-20
    • 1970-01-01
    • 2017-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-01
    相关资源
    最近更新 更多