2013-05-22 2 views
0

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

using Sitecore.Security.Authentication; 

if (AuthenticationManager.GetActiveUser().Domain.Name != "sitecore") 
{ 
    //not permitted to use the admin module 
} 

Эта проверка позволяет администраторам использовать настраиваемый модуль при условии, что они вошли в портал sitecore. Но проблема заключается в том, что каждый раз, когда они используют функцию предварительного просмотра sitecore для предварительного просмотра какого-либо элемента, в настоящее время активный пользователь получает изменения на «extranet \ Anonymous». С этого момента наш пользовательский модуль думает, что пользователь не является администратором sitecore и запрещает доступ к модулю.

Как преодолеть эту проблему? Нам нужна эта проверка безопасности для нашего модуля администрирования, а также функция предварительного просмотра.

Заранее благодарен!

PS. Увидел это по известным вопросам при дальнейшем изучении. http://sdn.sitecore.net/Products/Sitecore%20V5/Sitecore%20CMS%206/ReleaseNotes/KnownIssues%20Recommended/Users%20in%20Preview%20mode%20do%20not%20have%20access%20to%20restricted%20pages%20unless%20they%20log%20in%20on%20the%20website.aspx

+1

Какую версию Sitecore вы используете? В какой момент жизненного цикла страницы вы проверяете домен пользователя? Я проверил его в своем проекте, и во время предварительного просмотра я получаю '' sitecore '' для пользователя ** admin **. «Sitecore.Context.User.GetDomainName()» возвращает экстранет для вас? Вы уверены, что 'SecurityDisabler' не используется в коде для предварительного просмотра? –

+0

Спасибо, что опробовали его в Марасе. Мы используем Sitecore 6.6.0 (rev. 120918). Я проверяю домен в Page_Load. 'Sitecore.Context.User.GetDomainName()' также дает тот же результат. Нет, мы не используем SecurityDisabler на общедоступном веб-сайте. (мы иногда используем его в пользовательских агентах) – ravinsp

ответ

0

Приложение предварительного просмотра просматривает сайт в контексте экстрасети \ анонимного пользователя, чтобы показать, как сайт выглядит/ведет себя к посетителям сайта, скрывая защищенный контент и т. Д. Для выполнения проверок, которые вы выполняете в своем модуле, вы можете использовать Sitecore.Publishing.PreviewManager.GetShellUser() в сочетании с Sitecore.Context.PageMode, чтобы получить логику, которую вы ищете.

+0

Спасибо за ответ. 'Sitecore.Publishing.PreviewManager.GetShellUser()' заполняется только после использования функции предварительного просмотра (в противном случае она будет пустой, даже если пользователь sitecore вошел в систему). Поэтому в моем модуле, чтобы проверить, вошел ли пользователь sirecore, я сначала проверяю 'GetDomainName()', и если он терпит неудачу, я также проверяю PreviewManager.GetShellUser(). Таким образом, я могу освещать сценарии как до, так и после использования функции предварительного просмотра. – ravinsp

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