【问题标题】:Sitecore Custom User Profile - where is it stored how can it be queriedSitecore 自定义用户配置文件 - 它存储在哪里如何查询
【发布时间】:2010-02-23 02:20:13
【问题描述】:

我在 Sitecore 的核心数据库中创建了一个自定义用户配置文件模板和对象(根据 Security API Cookbook)。

我可以通过编程方式选择此选项(根据 Security API Cookbook),以便我的外联网用户拥有一个扩展的个人资料,涵盖所有常见的嫌疑人(地址、电话、电子邮件格式等)

但是,这些数据存储在哪里?如果我想查询数据库以返回基于此配置文件数据的用户子集,我该如何访问它。

Extranet 成员系统的一个典型要求是提取用户列表以通过电子邮件或电话类型的活动联系。这可以通过 Sitecore 会员系统完成吗?

更新> 我将猜测并说配置文件数据存储在 aspnet_Profile.PropertyValuesBinary .. 这将使它几乎无法查询并且不适合我的目的。那是不幸的。因此,为了扩展我的问题,如果是这样的话,是否可以让 Sitecore 将这些值存储在文本字段中以便它们可以搜索?

【问题讨论】:

    标签: membership sitecore


    【解决方案1】:

    SqlProfileProvider 的标准 Microsoft 实现(在 Sitecore 中默认使用)将用户配置文件信息存储在 aspnet_Profile 表中。所有属性都被序列化到 PropertyNames / PropertyValuesString 列中。 PropertyValuesBinary 用于存储二进制数据(图像)。更多细节看System.Web.Profile.SqlProfileProvider的代码,SetPropertyValues方法。

    接下来,您在用户配置文件中定义的所有自定义属性都将被序列化为 Profile 类的 SerializedData 属性,并再次像任何其他属性一样被序列化为 PropertyNames / PropertyValuesString 列。

    此外,一些属性存储在 aspnet_Membership 表中(出于某种原因) - 电子邮件和评论。

    因此,如果您要通过电子邮件查询用户,您可以使用 MembershipProvider 的 FindUsersByEmail 方法。否则,如果您打算按另一个属性值进行过滤,我想您必须获取所有用户并过滤获得的集合。

    希望这会有所帮助。

    【讨论】:

    • 谢谢。我想我正在寻找有关 Sitecore 如何扩展 SqlProfileProvider 的信息。但似乎正是这种方式。我之前发现用于存储数据的方法定义了哪个字段(字符串/二进制)属性值以 .. 结尾用于实现与死狗一样可查询的分析解决方案。
    【解决方案2】:

    上周我遇到了这个确切的问题,没有想出一个永久的解决方案,但为了解决我的特定问题,我编写了一个小帮助页面并将其添加为一个 Sitecore 应用程序,以便从 CMS 界面访问。它所做的只是查询所有用户,并确定他们是否分配了 5-6 个配置文件属性中的任何一个。

    var userList = Sitecore.Security.Accounts.UserManager.GetUsers();
    

    那是抓取用户的相关行,它返回Sitecore.Common.IFilterable

    因此,如果您需要从所有用户那里获取个人资料信息,您可以这样做:

    foreach (Sitecore.Security.Accounts.User user in userList)
    {
        Sitecore.Security.UserProfile profile = user.Profile;
        string whatever = profile["Whatever"];
        //add whatever to a list or something
    }
    

    这对我来说效果很好,但我不知道在你的情况下它有多可行。

    【讨论】:

    • 是的,只有少数用户才能获得整个用户列表。我正在计划数千,可能是数万......虽然这种方法有效,但“它在你的解决方案中的可行性”是一个大问题。但是干杯!
    • 太棒了 - 正是我需要用于报告目的来提取一些配置文件信息以进行进一步处理。
    猜你喜欢
    • 1970-01-01
    • 2018-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 2014-12-01
    相关资源
    最近更新 更多