我想知道每个解决方案,并且只保留最好的解决方案“关闭每个匿名用户的网站”。匿名用户应该只有登录表单。
现有方式:
还有其他解决方案吗?什么是最好的?
注意:尝试使用zope安全性时遇到问题,即使登录表单无法访问,请详细说明实现此目的的方法。
答案 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自定义,就像我做的那样:
但鉴于我没有尝试过这两个最后选项中的任何一个,我不能说我的方式是 方式。我可以说这对我有用,希望它对你有用。
答案 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]