我有两个plone站点由相同的plone设置提供,每个站点由两个不同的域名访问,这两个域名指向相同的IP地址。 apache前端有虚拟主机,mod_proxy设置为将URL定位到适当的plone站点。总结:
DNS:
mysite1.com -> my machine's IP address
mysite2.com -> ditto
Plone:
2 Plone sites: site1, site2
Apache:
2 virtual hosts defined:
ProxyPass / http://localhost:8080/VirtualHostBase/http/mysite1.com:80/site1/VirtualHostRoot/
ProxyPassReverse / http://localhost:8080/VirtualHostBase/http/mysite1.com:80/site1/VirtualHostRoot/
and
ProxyPass / http://localhost:8080/VirtualHostBase/http/mysite2.com:80/site2/VirtualHostRoot/
ProxyPassReverse / http://localhost:8080/VirtualHostBase/http/mysite2.com:80/site2/VirtualHostRoot/
这允许URL mysite1.com转到plone“site1”和mysite2.com转到plone“site2”。
这一切都有效。
但是,如果我在浏览器中访问:mysite1.com/site2,那么我将获得site2的内容,其中包含每个站点的主题元素。同样,如果我访问mysite2.com/site1,那么我会从两个网站中混合使用内容和主题。
我知道这些网址在任何地方都看不到 - 只是我输入它们 - 我只是担心这种串扰确实发生了,因此我在每个网站中对不同的安全域有什么影响?
答案 0 :(得分:0)
这是Acquisition的祝福/诅咒。 Here是一个解决方案。
答案 1 :(得分:0)
您遇到的问题称为Acquisition;从对象的包含而不是从它的类层次结构继承的属性。
您无需担心这会从您的网站中删除安全限制。在site1或site2中定义的用户无法获得访问所获取站点的其他权限,只能通过这种方式访问匿名(公共)信息和方法。
如果您访问具有在顶级定义的用户的任一站点(因此包含两个站点的根Zope对象),那么您可以访问任一站点上的受保护信息,获取与否。 / p>
串扰的唯一风险是,如果您的站点依赖于能够访问与其他站点对象具有相同ID的皮肤方法或对象,并且该皮肤方法或对象已消失(例如,已删除) 。然后,您的代码最终会访问获取的站点对象,结果不可预测,因为获取的站点显然与您的代码所期望的不同。对于皮肤方法等,安全性不允许您做任何伤害。浏览器视图和其他python级代码当然最终会造成伤害,但这应该是一种非常罕见的情况组合。如果您的网站没有可能与您的网站内容冲突的ID,则无需担心此问题。