2015-04-30 2 views
2

Я хочу создать магазин регистрации пользователя для сайта Sitecore 8. Пользователи войдут во внешнюю базу данных.Членство для внешних пользователей в Sitecore 8

  • Sitecore.NET 8.0 (ред. 150223)
  • .NET Framework 4.0.30319.18052
  • Бритва версия = 3.0.0.0
  • MVC 5.2.3.0

Asp.net MVC поставляется с встроенным членством (AccountController, views и т. д.). Я хотел передать это в проект Sitecore. Проблема Sitecore также использует членство внутри страны. Я знаю, что есть способ получить членство, работающее для версий Sitecore 6.x, через поставщиков коммутации, описанных в Sitecore authenticate users against external membership database.

Это все тот же процесс для Sitecore 8?

ответ

1

В итоге я не использовал SimpleMembership и просто пошел с Membership. Я не мог получить адаптер, который ссылается на ссылку thecodeking.

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

Веб.конфиг:

В membership разделе,

  • изменение realProviderName в "switcher"
  • копия "sql" узла и изменить имя и connectionStringName в "external"

В switchingProviders разделе

  • добавить "external" узел с доменами "external"

web.config:

<membership defaultProvider="sitecore" hashAlgorithmType="SHA1"> 
    <providers> 
    <clear /> 
    <!-- change realProviderName to "switcher" --> 
    <add name="sitecore" 
     type="Sitecore.Security.SitecoreMembershipProvider, Sitecore.Kernel" 
     realProviderName="switcher" 
     providerWildcard="%" 
     raiseEvents="true" 
     /> 
    <add name="sql" 
     type="System.Web.Security.SqlMembershipProvider" 
     connectionStringName="core" 
     applicationName="sitecore" 
     minRequiredPasswordLength="1" 
     minRequiredNonalphanumericCharacters="0" 
     requiresQuestionAndAnswer="false" 
     requiresUniqueEmail="false" 
     maxInvalidPasswordAttempts="256" 
     /> 
    <add name="switcher" 
     type="Sitecore.Security.SwitchingMembershipProvider, Sitecore.Kernel" 
     applicationName="sitecore" 
     mappings="switchingProviders/membership" 
     /> 
    <!-- copy "sql" node and change name and connectionStringName to "external" --> 
    <add name="external" 
     type="System.Web.Security.SqlMembershipProvider" 
     connectionStringName="external" 
     applicationName="sitecore" 
     minRequiredPasswordLength="1" 
     minRequiredNonalphanumericCharacters="0" 
     requiresQuestionAndAnswer="false" 
     requiresUniqueEmail="false" 
     maxInvalidPasswordAttempts="256" 
     /> 
    </providers> 
</membership> 

<switchingProviders> 
    <membership> 
    <provider providerName="sql" storeFullNames="true" wildcard="%" domains="*" /> 
    <!-- add "external" node with domains "external" --> 
    <provider providerName="external" storeFullNames="true" wildcard="%" domains="external" /> 
    </membership> 
</switchingProviders> 

ConnectionStrings.config:

  • добавить соединение "external"

конфигурации:

<add name="external" connectionString="..." providerName="System.Data.SqlClient"/> 

Domains.config:

  • добавить домен "external"

конфигурации:

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

Затем используйте "external" поставщика напрямую, что экономит пользователь до external дБ. Это ключевой пункт.

// uses "external" provider directly 
Membership.Providers["external"].CreateUser(...) 

Вместо этого это экономит до core дБ.

// uses default provider 
Membership.CreateUser(...) 
2

Это по-прежнему относится к Sitecore 8, и основные функции членства asp.net и поставщик членства в коммутаторах все еще могут быть использованы. Сторона mongo db Sitecore 8 предназначена для xDb, но вы все еще используете системы членства для аутентификации.

Я не буду более подробно останавливаться, поскольку сообщение, на которое вы ссылаетесь, похоже, охватывает все это. Только в случае, если есть еще один хороший пост здесь:

https://himadritechblog.wordpress.com/2014/11/24/sitecore-custom-membership-provider/

Убедитесь, что вы объявляете новый домен для вас системы членства в вашем domains.config.

+0

Я хочу повторно использовать логику AccountController, которую дает шаблон проекта MVC. Я следовал за сообщением, и я получаю ниже исключения. Могу ли я использовать SimpleMembershipProvider с Sitecore 8? Исключение: 'Чтобы вызвать этот метод, свойство« Membership.Provider »должно быть экземпляром« ExtendedMembershipProvider ». ' – hIpPy

+1

Похоже, что это должен быть ExtendedMembershipProvider. Это может помочь - http://www.thecodeking.co.uk/2013/11/using-simplemembershipprovider-with.html#.VUXaU9q9KK0 –

+0

Как предположил xoail, существуют другие более простые способы аутентификации, и я бы рассмотрел каждую из варианты против ваших требований перед вспашкой вперед с поставщиком членства. https://www.sitecore.net/learn/blogs/technical-blogs/john-west-sitecore-blog/posts/2011/08/authentication-options-with-the-sitecore-aspnet-cms.aspx –

0

Лично я хочу, чтобы логика членства была очень простой и вдали от пользовательских поставщиков. В Sitecore есть концепция виртуального пользователя, которую вы можете создать после аутентификации на внешней БД. Вы можете установить любые пользовательские свойства этого виртуального пользователя и позволить sitecore записывать его в xDB. Вот хороший example.

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