2009-09-28 3 views
2

У меня есть два сайта IIS, указывающие на разные физические папки. Это значит, что вы можете различать файл web.config и файлы и сборки, используемые для сайтов. . База данных настроена так, чтобы указывать на тот же экземпляр для обоих сайтов. В web.config настроены для запуска из разных частей. . это:Несколько сайтов и запросы «кросс-сайта» незаконны

  • /Sitecore/содержание/дом/по умолчанию

  • /Sitecore/содержание/главная/интранет

до сих пор так хорошо.

Теперь проблема в том, что я могу получить содержимое, не принадлежащее фактическому сайту, введя его полный путь. То есть.

http://www.default.com/sitecore/content/home/intranet.aspx < - это не должно допускаться, поскольку www.default.com сконфигурирован с /sitecore/content/home/default как корень.

Есть ли какой-либо встроенный механизм, чтобы его не разрешить или я должен подклассифицировать itemresolver, чтобы сделать «перекрестные сайты» -ресурсами незаконными.

ответ

2

Это что-то делать с тем, как Sitecore решает пункты, я нашел 3 разных URL для каждого элемента. Например скажем, у меня есть следующая структура:

-sitecore 
    -content 
    -home 
     -page1 

я могу получить доступ стр.1 либо через:

  • http://mysite/sitecore/content/home/page1.aspx
  • http://mysite/page1.aspx
  • http://mysite/home/page1.aspx

Однако, зная, что это не будет помогите решить вашу проблему. Лучшее решение, которое я могу предложить, - использовать безопасность. Однако, если на обоих сайтах нужен анонимный доступ, вопрос в том, как вы это контролируете?

Я предполагаю, что, поскольку у вас есть два отдельных web.config, вам также необходимо разделить разделы конфигурации Sitecore. Итак, что мы можем сделать, это создать процесс конвейера, который выполняется как часть маршрута начала HTTP-запроса (в файле web.config as/configuration/sitecore/pipelines/httpRequestBegin), создающего один для каждого сайта и обновляющий соответствующий web.config. Когда этот процесс называется, он может создать виртуального пользователя, который принадлежит к группе, которая ограничивает доступ к сайту, который запросил пользователь.

Существует некоторый код here, который показывает вам, как создать виртуальный пользователь:

И here по трубопроводам:

Надеется, что это помогает :-)

0

Ну, если элемент внутренней сети (и ниже) защищена с безопасностью Sitecore это не должно быть проблемой, ни возможности доступа :)

Если вы не можете справиться с безопасностью, то я бы с ItemResolver.

Приветствие