【问题标题】:How to use a profile provider in Sitecore?如何在 Sitecore 中使用配置文件提供程序?
【发布时间】:2012-02-20 22:47:52
【问题描述】:

我希望使用 Sitecore 创建一个产品目录网站,允许用户将产品保存到他们在使用网站时可以管理的自定义列表中。

这些列表可能包含数百个项目,因此使用标准自定义配置文件属性可能会失控,因此我认为使用外部数据源是最好的方法。

是否有任何示例说明如何实现存储到外部 sql 数据库的自定义配置文件提供程序?有没有更好的方法来做到这一点?

更新 对此进行扩展。为了测试,我从这里下载了 SQL Table Profile Provider 示例:http://code.msdn.microsoft.com/Using-the-SQL-Table-4c220996 并使用它运行。然后,我在 Sitecore 项目中添加了对此提供程序的引用。 在 web.config 我有:

<profile defaultProvider="switcher" enabled="true" inherits="Sitecore.Security.UserProfile" >
        <providers>
            <clear />

           <add name="sql" type="System.Web.Profile.SqlProfileProvider"  connectionStringName="core" applicationName="sitecore" />

           <add name="TableProfileProvider"
                   type="Microsoft.Samples.SqlTableProfileProvider, SQLTableProfileProviderCS"
                   connectionStringName="myProfileConnString" table="aspnet_Profile2"
                   applicationName="/" />

            <add name="switcher" type="Sitecore.Security.SwitchingProfileProvider, Sitecore.Kernel" applicationName="sitecore" mappings="switchingProviders/profile" />
        </providers>
        <properties>
            <clear />
            <add type="System.String" name="SC_UserData" />

        </properties>
    </profile>

在switchingProviders下:

        <profile>
            <provider providerName="TableProfileProvider" storeFullNames="false" wildcard="%" domains="mydomain" />
            <provider providerName="sql" storeFullNames="true" wildcard="%" domains="*" />
        </profile>

在 /Security/Domains.config 中:

<domain name="mydomain" ensureAnonymousUser="false"/>

如果我尝试使用与 SQL Table Profile Provider 示例项目相同的方法获取当前用户的配置文件并访问自定义属性,则自定义配置文件始终为空。

我的配置中一定遗漏了一些东西。 任何建议将不胜感激。

【问题讨论】:

  • 您是指会员提供商吗?
  • 我的理解是有成员资格、角色和资料提供者。我可以使用标准的 sitecore 会员提供程序,我只想扩展配置文件信息以存储默认 asp.net 属性之外的自定义属性,因为我听说在那里存储太多信息会导致性能问题。我是否需要使用自定义会员提供程序才能使配置文件提供程序正常工作?

标签: sitecore profile-provider


【解决方案1】:

你会发现this document 很有趣。它包含有关提供程序系统如何工作的低级详细信息,并就在 Sitecore 上下文中实施自定义提供程序提供了特别建议。

更新:如果您只想使用外部存储的某些属性扩展配置文件功能,我认为您不应该实现其他类型的提供程序。这些片段是相当独立的,但是我没有自己尝试。

通常,您要查找的内容在 Sitecore 文档中被称为“部分配置文件功能”。我上面提到的文件包含以下注释:

重要默认不支持在不同存储中拥有不同用户配置文件属性集的选项 Sitecore CMS 安装。您必须安装 Active Directory 模块并相应地配置它以使用此选项(请参阅 Active Directory 模块文档)。

因此,使其工作的某些功能可能隐藏在 AD 模块的某个位置,而不是默认的 Sitecore CMS。我认为您不应该配置 AD 模块 - 否则将毫无意义 - 只需安装它。

除了这个配置文件提供者仍然有点具体 - 请仔细查看 4.2 配置文件提供者实施建议部分

最后,我鼓励您更深入地研究该主题 - 它非常先进,可能需要进行一些调整,但您的场景似乎并非不可能用已有的内容实现。

【讨论】:

  • 谢谢,我已经处理了这份文件,结果是会员资格失效
  • “破碎的会员资格”是一个相当广泛的描述......如果你能用更详细的方式来丰富你的问题,那就太好了
  • 对不起。我浏览了文档,但发现配置文件提供者的实现不如会员或角色提供者详细。当我激活站点核心提供商切换器时,站点核心安装在尝试执行与成员相关的任何事情时冻结。我显然做错了什么......我是否需要实现会员提供程序才能让配置文件提供程序工作?
  • 谢谢Yan,我没有想到要查看AD 模块,因为不使用活动目录。我会看看那个模块,看看它是否可以帮助我找出如何让我的实现工作。
  • 我已经阅读了 AD 模块和低级 Sitecore Cms 安全和自定义提供程序文档,但没有进一步了解。我可以让我的自定义配置文件提供程序在 Sitecore 外部的应用程序中正常工作,但是在尝试将其集成到 Sitecore 时,它​​只是不使用自定义提供程序。我怀疑它与激活配置文件提供程序切换器有关,但我已经尝试了这些先前文档中概述的设置/配置步骤,但切换器似乎没有使用我的提供程序。您是否知道有关将配置文件提供程序集成到 Sitecore 的任何其他文档?
【解决方案2】:

如果我理解正确的话,我相信你可以在web.config这里自定义这个:

<profile defaultProvider="sql" enabled="true" inherits="Sitecore.Security.UserProfile, Sitecore.Kernel">
  <providers>
    <clear />
    <add name="sql" type="System.Web.Profile.SqlProfileProvider" connectionStringName="core" applicationName="sitecore" />
    <add name="switcher" type="Sitecore.Security.SwitchingProfileProvider, Sitecore.Kernel" applicationName="sitecore" mappings="switchingProviders/profile" />
  </providers>
  ...

如您所见,提供程序是一个标准的 ASP.NET 配置文件提供程序 (reference here) -- 特别是 SQL provider -- 因此您应该能够遵循任何 .NET 指南来了解如何操作。

【讨论】:

  • 我尝试过浏览 .net 指南并让它在 sitecore 之外的示例中工作,但是当我尝试将其集成到 sitecore 并使用配置文件提供程序切换器时(我认为这是必需的)它破坏了现有的 sitecore 用户配置文件并导致无法登录到 sitecore。我正在寻找有关与 sitecore 本身集成的更多信息。
  • 尝试使用 Yan 指定的文档 ;-)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 2010-09-18
  • 2019-09-21
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多