Ошибка при запросе siteroot при удалении анонимного доступа

Мы создали сайт, большинство страниц которого необходимо заблокировать для анонимных пользователей. Единственные страницы, к которым они должны иметь доступ, это:

  • Авторизоваться
  • Сброс пароля
  • Проверка учетной записи
  • Страница не найдена
  • Политика конфиденциальности
  • Т и С

StartItem веб-сайта был установлен на «/Home», поскольку все остальные страницы, включая те, которым разрешен анонимный доступ, перечислены ниже.

У этого узла удалено чтение «extranet\Anonymous», а затем мы разрешаем доступ для чтения к определенным страницам, к которым мы хотим, чтобы они имели доступ.

Мы обнаружили, что если мы запросим URL-адрес, такой как: www.domain.com/page-i-cant-get-to, тогда Sitecore перенаправит вас на URL-адрес, указанный в атрибуте loginPage на сайте, что правильно.

Однако, если я запрашиваю www.domain.com, я получаю сообщение об ошибке: «Макет запрошенного документа не найден.

Если делаю логин, то захожу тот же урл, все нормально.

Я прошел конвейер ExecuteRequest и обнаружил, что при запросе www.domain.com/page-i-cant-get-to Context.Item имеет значение null, поэтому он передается в метод HandleItemNotFound(args).

Если мы запрашиваем корневую страницу, то она устанавливается как идентификатор корневого узла sitecore {11111111-1111-1111-1111-111111111111} и, таким образом, проходит через HandleItemNotFound и в HandleLayoutNotFound(args)

Я попытался использовать атрибут «requireLogin», но тогда я могу получить доступ только к странице входа в систему, а не к любой другой странице, к которой я хочу разрешить анонимный доступ.

Я также попытался изменить startItem на страницу входа, но тогда все URL-адреса для страниц имеют неправильную структуру.

Кто-нибудь может пролить свет на то, как это должно быть сделано?

заранее спасибо


person SimonTheGoat    schedule 19.06.2014    source источник
comment
Вы нашли решение? Я сейчас сталкиваюсь с теми же проблемами.   -  person Dražen Janjiček    schedule 22.01.2016
comment
В итоге мы переопределили метод Process в конвейере ExecuteRequest. В конце метода он проверял, был ли Context.Item нулевым. Мы изменили это значение на null или args.LocalPath == /   -  person SimonTheGoat    schedule 05.02.2016


Ответы (1)


Почему бы вам не попробовать оставить анонимного пользователя с разрешением на чтение домашнего элемента, а затем запретить страницы (элементы), которые вы хотите заблокировать?

person Eduardo Muñoz    schedule 02.10.2014