2

我有两个指向不同物理文件夹的 IIS 站点。这是为了能够区分 web.config 以及用于站点的文件和程序集数据库设置为指向两个站点的相同实例在 web.config 中配置为从不同部分开始结构如下:

  • /sitecore/content/home/default

  • /sitecore/content/home/intranet

到现在为止还挺好。

现在,问题是我能够通过输入其完整路径来检索不属于实际站点的内容。IE。

http://www.default.com/sitecore/content/home/intranet.aspx<-- 这不应该被允许,因为www.default.com被配置/sitecore/content/home/default为 root。

是否有任何内置机制来禁止这一点,或者我是否必须对 itemresolver 进行子类化以使“跨站点”请求非法。

4

2 回答 2

2

这与 Sitecore 如何解析项目有关,我为每个项目找到了 3 个不同的 URL。例如说我有以下结构:

-sitecore
  -content
    -home
      -page1

我可以通过以下方式访问 page1:

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

但是,知道这一点无助于解决您的问题。我可以建议的最佳解决方案是使用安全性。但是,如果两个站点都需要匿名访问,问题是您如何控制它?

我想既然你有两个单独的 web.config,你还必须分开 Sitecore 配置部分。因此,我们可以做的是创建一个作为 http 请求开始管道的一部分运行的管道进程(在 web.config 中为 /configuration/sitecore/pipelines/httpRequestBegin),为每个站点创建一个并更新相关的 web.config。当这个过程被调用时,它可以创建一个虚拟用户,该用户属于一个限制对用户请求的站点的访问的组。

这里有一些代码向您展示如何创建虚拟用户:

管道上:

希望这可以帮助 :-)

于 2009-09-30T15:15:52.393 回答
0

好吧,如果 Intranet 项目(及以下项目)受到 Sitecore 安全性的保护,那么它应该没有问题,也不可能访问 :)

如果您不能安全地处理它,那么我会使用 ItemResolver。

干杯

于 2009-09-28T18:53:44.960 回答