Как использовать профиль провайдера в Sitecore? - PullRequest
2 голосов
/ 21 февраля 2012

Я хочу создать сайт каталога товаров с использованием Sitecore, который позволит пользователям сохранять товары в настраиваемых списках, которыми они могут управлять при использовании сайта.

Эти списки потенциально могут содержать сотни элементов каждый, поэтомустандартные атрибуты настраиваемого профиля могут выйти из-под контроля, поэтому я подумал, что лучше использовать внешний источник данных.

Есть ли примеры того, как реализовать поставщика настраиваемого профиля, который хранит во внешней базе данных sql?Есть ли лучший способ сделать это?

ОБНОВЛЕНИЕ Чтобы расширить это.Чтобы проверить, я скачал пример поставщика таблиц профилей SQL здесь: 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, настраиваемый профиль всегда имеет значение null.

Я должен что-то упустить в своей конфигурации.Любые предложения будут ценны.

Ответы [ 2 ]

4 голосов
/ 21 февраля 2012

Вы найдете этот документ интересным. Он содержит подробные сведения о том, как работает система провайдеров, а также специальные рекомендации по реализации пользовательских провайдеров в контексте Sitecore.

ОБНОВЛЕНИЕ : Я не думаю, что вам следует внедрять другие типы поставщиков, если вы просто хотите расширить функциональность профиля с помощью некоторых свойств из внешнего хранилища. Эти произведения совершенно независимы, но я сам не пробовал.

Как правило, то, что вы ищете, упоминается как "функция частичного профиля" в документах Sitecore. И документ, который я упомянул выше, содержит следующее примечание:

Важно Возможность иметь разные наборы свойств профиля пользователя в разных хранилищах не поддерживается по умолчанию Sitecore CMS установка. Вы должны установить Active Directory модуля и настройте его соответственно, чтобы использовать эту опцию (см. документация модуля Active Directory).

Так что, вероятно, некоторая функциональность для его работы скрывается где-то в модуле AD, а не в стандартной CMS Sitecore. Я не думаю, что вам следует настроить модуль AD - иначе было бы бессмысленно - просто установите его.

Помимо этого, поставщик профилей по-прежнему немного конкретен - внимательно изучите раздел 4.2 Рекомендации по реализации поставщика профилей .

Наконец, я бы посоветовал вам изучить тему глубже - она ​​довольно продвинута и может потребовать некоторой доработки, но ваш сценарий не кажется невозможным для реализации с тем, что уже есть.

2 голосов
/ 21 февраля 2012

Если я вас правильно понимаю, я полагаю, что вы можете настроить это в 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 Profile Provider (ссылка здесь ) - в частности, поставщик SQL - так что вы сможете следовать любым инструкциям .NET, как это сделать.

...