Мы создали сайт, большинство страниц которого необходимо заблокировать для анонимных пользователей. Единственные страницы, к которым они должны иметь доступ, это:
- Авторизоваться
- Сброс пароля
- Проверка учетной записи
- Страница не найдена
- Политика конфиденциальности
- Т и С
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-адреса для страниц имеют неправильную структуру.
Кто-нибудь может пролить свет на то, как это должно быть сделано?
заранее спасибо