2014-05-13 3 views
2

У нас есть необходимость использовать существующую внешнюю базу данных для наших потребностей в членстве. Эта база данных будет содержать всю базовую информацию, необходимую для аутентификации и авторизации пользователей. Я смотрю, есть ли у вас документация, которая может помочь мне в этом процессе. Я видел сообщения в Интернете для реализации пользовательских поставщиков членства. Но я не видел примеров того, как интегрировать поставщика пользовательского членства с API Sitecore, так что Sitecore.Context.User вернет информацию зарегистрированного пользователя.Поставщик пользовательских услуг Sitecore

Кроме того, есть ли способ получить доступ к настраиваемой информации профиля через Sitecore API?

Thanks

+0

Будет ли эта БД также аутентифицировать редакторы для бэкэнда sitecore или только для доступа к веб-сайту? Поскольку важно, чтобы вы не нарушили функциональность Sitecore, и настройка поставщика членства в коммутаторах не так проста, поскольку в документации есть какая-либо информация (или я не мог ее найти) – IvanL

+0

Это для проверки подлинности веб-сайта только. Входные записи Sitecore должны оставаться такими, как есть. – Gabbar

+0

В этом случае вам лучше настроить поставщиков членства. Я отправлю ответ, как мы это сделали для проекта, над которым я сейчас работаю. – IvanL

ответ

2

Как и было обещано в моем комментарии, здесь мы установили настройку, чтобы настройка Sitecore оставалась неизменной при добавлении дополнительного поставщика членства для использования на вашем веб-сайте.

Сначала это можно найти внутри нашего web.config файла преобразования под <system.web>:

<membership hashAlgorithmType="SHA256" xdt:Transform="SetAttributes(hashAlgorithmType)"> 
    <providers> 
    <add name="sitecore" type="Sitecore.Security.SitecoreMembershipProvider, Sitecore.Kernel" realProviderName="switcher" providerWildcard="%" raiseEvents="true" xdt:Locator="Match(name)" xdt:Transform="Replace" /> 
    <add name="myprovider" type="MyProject.SecurityProviders.MembershipProvider, MyProject.SecurityProviders" applicationName="sitecore" xdt:Transform="Insert"/> 
    </providers> 
</membership> 
<roleManager> 
    <providers> 
    <add name="sitecore" type="Sitecore.Security.SitecoreRoleProvider, Sitecore.Kernel" realProviderName="switcher" raiseEvents="true" xdt:Locator="Match(name)" xdt:Transform="Replace" /> 
    <add name="myprovider" type="MyProject.SecurityProviders.RoleProvider, MyProject.SecurityProviders" applicationName="sitecore" xdt:Transform="Insert"/> 
    </providers> 
</roleManager> 

Далее это находится в отдельных конфигурациях включают в себя файл непосредственно под <sitecore>:

<switchingProviders> 
    <membership> 
    <provider providerName="myprovider" storeFullNames="false" wildcard="%" domains="websitedomain" patch:before="*"/> 
    </membership> 
    <roleManager> 
    <provider providerName="myprovider" storeFullNames="false" wildcard="%" domains="websitedomain" patch:before="*"/> 
    </roleManager> 
</switchingProviders> 

Этих 2 изменения конфигурации позволят вам создать пользовательский поставщик членства и роли (в случае необходимости). Как вы видите, сложная часть не делает поставщика членства в коммутаторе sitecore поставщиком по умолчанию (как указано в документации 2.6.2), но устанавливая realProviderName провайдера sitecore равным switcher.

С этой точки зрения это простая реализация членства в ASP.NET.

+0

Большое спасибо! Я установил провайдера, но я не знал о свойстве realProviderName. – Gabbar

+0

Какими будут настройки, если у меня есть собственный домен? – Gabbar

+0

Домен вашего сайта установлен во второй части конфигурации, где вы говорите, для каких доменов ваш пользовательский поставщик будет обрабатывать запросы. В качестве примера я использовал: 'domains =" ​​websitedomain "' – IvanL

1

Вы уже видели этот документ?

A Developer's Guide to Integrating Authentication Systems with Sitecore

Он говорит вас через весь процесс создания поставщика членства ASP.net. Весь смысл провайдера в том, что он абстрагирует API от реализации, поэтому вы можете определенно достичь того, что вам нужно.

По существу, вам необходимо переопределить все соответствующие методы у базового поставщика ASP.Net, используя их для «обертывания» вокруг эквивалентных вызовов внешней базы данных.

Смежные вопросы