创建Plone私有站点的最佳方法是什么?

时间:2011-06-16 11:14:53

标签: plone

我想知道每个解决方案,并且只保留最好的解决方案“关闭每个匿名用户的网站”。匿名用户应该只有登录表单。

现有方式:

  • 使用zope安全性(删除对root plonesite匿名的查看权限)
  • 使用工作流程(更改已发布状态的安全性映射)
  • 在http auth
  • 的代理中使用apache

还有其他解决方案吗?什么是最好的?

注意:尝试使用zope安全性时遇到问题,即使登录表单无法访问,请详细说明实现此目的的方法。

5 个答案:

答案 0 :(得分:5)

我会使用http://pypi.python.org/pypi/iw.rejectanonymous。它为Plone站点添加了一个自定义遍历钩子,只允许访问登录表单及其为匿名用户使用的资源。

请记住,在这种情况下,您无法在前端缓存中缓存任何页面或列表,因为无需身份验证即可访问。在Varnish中缓存CSS,JS和图像资源仍然是一个好主意,您可以在浏览器缓存中缓存内容。

答案 1 :(得分:1)

我使用此用例的方法一直(并且仍然)始终处理工作流程。

开始自定义“Intranet工作流程”,然后删除所有匿名选项。 然后提供您想要的经过身份验证的(或成员)权限。

无需额外代码。 不需要额外的产品。 无需外部配置。

只有Plone的力量。

答案 2 :(得分:0)

我曾经保护过Plone网站,以便只有经过身份验证的用户才能看到任何内容(登录表单 是可访问的)。它是Plone 2.5,我知道我在Plone站点根目录的访问ZMI页面(manage_access)中修改了(已检查/未检查的角色)这些权限:

  • 添加门户网站成员
  • 允许发送
  • 更改门户网站活动
  • 修改门户网站内容
  • 设置自己的密码
  • 设置自己的属性
  • 查看

我知道在下一个Plone版本中添加了新的权限,因此您可能需要调整其他版本。

我认为实现您所需要的最简单方法是通过这样做,虽然我建议使用GenericSetup而不是TTW自定义,就像我做的那样:

  • 比修改已发布的工作流状态更容易。
  • 如果配置Apache,则需要双重登录(访问登录表单然后登录Plone)。除非你设置一个特殊的PAS插件。在我看来,这种方法比我的方法更难。

但鉴于我没有尝试过这两个最后选项中的任何一个,我不能说我的方式是 方式。我可以说这对我有用,希望它对你有用。

答案 3 :(得分:0)

您还可以使用WebServerAuth插件,以便仅允许用户通过基本身份验证进行访问。 http://plone.org/products/webserverauth

这样,默认情况下,您可以保护网站上的所有内容,而不必担心plone登录表单。

答案 4 :(得分:-2)

如果您已经在运行Apache的虚拟主机,那么我将使用mod_rewrite来强制执行此操作。以下配置将所有未经身份验证的用户定向到登录表单,并允许用户使用忘记的密码过程。我用Plone 4.1测试了这个,我想它也适用于Plone 4.0

RewriteCond %{HTTP_COOKIE} !__ac=.*
RewriteCond %{REQUEST_URI} !^/acl_users/credentials_cookie_auth/require_login$
RewriteCond %{REQUEST_URI} !/login_form$
RewriteCond %{REQUEST_URI} !/login$
RewriteCond %{REQUEST_URI} !/logged_out$
RewriteCond %{REQUEST_URI} !^/portal_css/
RewriteCond %{REQUEST_URI} !^/portal_javascripts/
RewriteCond %{REQUEST_URI} !^/login.js$
RewriteCond %{REQUEST_URI} !^/logo.png$
RewriteCond %{REQUEST_URI} !^/mail_password_form$
RewriteCond %{REQUEST_URI} !^/mail_password$
RewriteCond %{REQUEST_URI} !^/portal_registration/passwordreset/
RewriteCond %{REQUEST_URI} !^/pwreset_form$
RewriteCond %{REQUEST_URI} !^/pwreset_finish$
RewriteRule ^(.*) /acl_users/credentials_cookie_auth/require_login?came_from=%{REQUEST_URI} [last,redirect=temp]