Анонимный доступ к элементу Sitecore
Мне было интересно, есть ли способ разрешить анонимный доступ к некоторому конкретному элементу контента SiteCore? Назначение разрешений на чтение для экстрасети \ анонимно для элемента через администратора Sitecore - не помогает...
[ОБНОВЛЕНИЕ] В программе просмотра доступа я убедился, что экстранет \ анонимный имеет доступ на чтение к необходимому элементу. В определении сайта я использую домен экстрасети для своего сайта:
<site name="website" hostName="mytest" patch:before="site[@name='scheduler']" virtualFolder="/" physicalFolder="/" enableAnalytics="true" rootPath="/sitecore/content/My Test" startItem="/Home" database="master" filterItems="true" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" enableWorkflow="true" disableClientData="false" loginPage="/login/Login.aspx"/>
3 ответа
Решение. Удалите экстранет / анонимный запрет на чтение из элемента sitecore в дереве содержимого.
Чтобы предотвратить анонимный доступ ко всему сайту, вы можете просто использовать элемент "sitecore / content".
Чтобы разрешить анонимный доступ к любому дочернему элементу - назначьте разрешение на чтение анонимному пользователю из домена сайта. В моем случае это был экстранет / аноним.
Интересно, это ошибка или особенность. В любом случае, я счастлив, что нашел решение.
Я могу вспомнить две причины, по которым "назначение разрешений на чтение для экстрасети \ анонимного не помогает":
Проблема A: Требования или архитектура вашего сайта означают, что разрешения не помогают решить эту проблему.
Например, ситуация, когда вы хотите, чтобы элемент был защищен большую часть времени, но необходимо разрешить анонимным пользователям прочитать сводку о нем, прежде чем они будут аутентифицированы правильно.
Здесь вы можете использовать код для переопределения пользовательского контекста, используемого для загрузки элемента. Самый простой, но самый опасный подход заключается в следующем:
using (new Sitecore.SecurityModel.SecurityDisabler())
{
var item = Sitecore.Context.Database.GetItem("/path/to/item");
// further processing
}
Это просто отключает обеспечение безопасности Sitecore внутри оператора using. Отсюда и опасность. Не кладите ничего, что действительно чувствительно к безопасности, внутри этого блока.
В качестве альтернативы вы можете изменить контекст безопасности для другого пользователя на время блока кода с помощью
var user = Sitecore.Security.Accounts.User.FromName("domain\username", false);
using (new Sitecore.Security.Accounts.UserSwitcher(scUser))
{
var item = Sitecore.Context.Database.GetItem("/path/to/item");
// further processing
}
Это предпочтительный подход - поскольку вы все еще используете безопасность - просто временно для учетной записи с большими правами, чем у пользователя контекста.
Проблема B: Разрешения должны быть правильным ответом для вашего решения, но в этом случае не работают.
Если это так, решить проблему практически невозможно без более подробной информации об установке Sitecore и о том, что пытается сделать ваш сайт. Если это относится к вам, вам лучше обратиться в службу поддержки Sitecore, чтобы выяснить, почему права пользователя не применяются правильно на вашем сайте. Они смогут посмотреть вашу конфигурацию, код и файлы журналов, чтобы попытаться решить основную проблему.
Это зависит от определения вашего сайта, какой пользователь будет использоваться при доступе к элементу при отсутствии проверки подлинности. Вы уверены, что экстранет \ аноним используется? Потому что есть следующие пользователи, которые возможно используются (от наиболее вероятных до наименее вероятных):
- встроенный \ анонимный (виртуальный пользователь, назначенный любому неаутентифицированному посетителю, просматривающему веб-сайт, у которого нет явно назначенного домена)
- экстранет \ анонимный (пользователь, назначенный любому неаутентифицированному посетителю, просматривающему веб-сайт по умолчанию)
- sitecore \ anonymous (пользователь, который назначается посетителю при доступе к странице входа в Sitecore)
РЕДАКТИРОВАТЬ 07/05/2014
Я также заметил, что используется default\anonymous. Это не описано в документации как вышеупомянутые пользователи. Дайте мне знать, какой пользователь был использован.