Подделка ролей пользователей в Sitecore 6.2

Документ Имитация ролей пользователей в SDN дает именно то, что Я нуждаюсь. У меня есть несколько «ролей», к которым у меня есть доступ через вызовы хранимых процедур, которые я не контролирую, только для чтения, через CRM, к которой у меня нет прямого доступа.

К сожалению, я не могу найти ни метод AddRole, ни даже класс UserItem по нынешнему имени. Есть ли эта функция в Sitecore 6.2? Если да, то где?


person Jesse Millikan    schedule 17.06.2010    source источник


Ответы (4)


Похоже, что код, на который вы ссылаетесь, относится к предыдущим версиям Sitecore, я думаю, 5.3.X. Модель безопасности изменилась, начиная с версии 6.0, чтобы использовать стандартную модель безопасности ASP.NET.

Чтобы получить дополнительные роли в Sitecore в режиме реального времени из другого источника, вы должны внедрить дополнительный поставщик ролей, добавить его в файл web.config и включить переключатели. Эта статья даст вам хороший обзор. Просто помните общую вещь: безопасность Sitecore (начиная с версии 6.0) во многом зависит от безопасности ASP.NET, поэтому то, что возможно в ASP.NET, должно быть возможно и в Sitecore.

Если однажды вы получите прямой доступ к CRM, вы сможете использовать стандартный Провайдер безопасности Sitecore CRM для получения контактов и групп из CRM.

Надеюсь это поможет.

person Yan Sklyarenko    schedule 18.06.2010

Без проверки я уверен, что ваша ссылка на SDN относится только к Sitecore 5.x. Вся модель безопасности была переделана в 6.x и обратной совместимости нет.

Однако, если я правильно понимаю, что вы хотите сделать, ваша задача довольно проста. Вам необходимо создать RoleProvider, 100% для стандартного ASP.NET, как указано в MSDN (http://msdn.microsoft.com/en-us/library/aa478950.aspx).

Затем вы подключаете это к своему решению Sitecore и настраиваете Sitecore на режим «переключателя».

<roleManager defaultProvider="switcher" enabled="true">
<providers>
    <clear/>
    <add name="sitecore" type="Sitecore.Security.SitecoreRoleProvider, Sitecore.Kernel" realProviderName="sql" raiseEvents="true"/>
    <add name="sql" type="System.Web.Security.SqlRoleProvider" connectionStringName="core" applicationName="sitecore"/>
<add name="your" type="RoleProvider, Here" applicationName="sitecore"/>
    <add name="switcher" type="Sitecore.Security.SwitchingRoleProvider, Sitecore.Kernel" applicationName="sitecore" mappings="switchingProviders/roleManager"/>
</providers>

And that's more or less it. Your roles will now appear just as any and all other roles in Sitecore, and can be assigned to users and/or roles for whatever purpose you're needing.

person Mark Cassidy    schedule 18.06.2010

Хотя эти другие решения хороши, они не отвечают на вопрос.

Функциональность виртуального пользователя по-прежнему жива и эффективна в Sitecore 6, но она перемещена в класс AuthenticationManager. Я нашел его сам, когда собирался бросить поиски, потому что он устраняет ряд ограничений в других методах.

Вот ваш лучший ориентир, хороший пример вы найдете в здесь .

Итак, чем же полезен этот метод?

Это полезно, когда вы используете несколько провайдеров, особенно когда вы делаете продвинутые вещи типа коннектора Active Directory.

Например, у нас есть ситуация, когда мы аутентифицируем пользователей и роли в двух разных активных каталогах, но мы хотим, чтобы роли из каждого из них применялись к пользователю после его входа в систему. Можно подумать, что вы можете просто назначить роли из одного AD. пользователю, прошедшему проверку подлинности в другом AD, но, конечно, нет. Мы не можем напрямую добавить роли домена «ad» пользователю «ad2», поэтому мы динамически добавляем соответствующие роли из домена Sitecore виртуальному пользователю, созданному в домен сайта. Теперь у них есть доступ к функциональным возможностям, которые управляются доменом «ad» и доменом «ad2».

У меня есть прекрасная небольшая диаграмма для видео, которая объясняет все это красивыми цветами, увы, я не могу прикрепить.

person misteraidan    schedule 25.03.2011

Это хороший вопрос для SDN (sdn.sitecore.net). Для виртуальных пользователей посмотрите на класс AuthenticationManager. Для управления пользователями и ролями посмотрите пространство имен Sitecore.Security.Accounts.

person seth    schedule 17.06.2010
comment
Я только что упомянул, что нашел документ в SDN и сделал ссылку на него, поэтому рекомендация попробовать SDN мне не поможет. - person Jesse Millikan; 17.06.2010