Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plone 如何对注册用户隐藏某些内容,但向匿名用户显示?_Plone - Fatal编程技术网

Plone 如何对注册用户隐藏某些内容,但向匿名用户显示?

Plone 如何对注册用户隐藏某些内容,但向匿名用户显示?,plone,Plone,这是给Plone 4的。这是一个相当普遍的问题。我有一个表单(ploneformgen),我想让匿名用户看到并填写,但我想对注册用户(即已登录的用户)隐藏它。同样,我在导航菜单中有一个“登录”链接。显然,匿名用户应该看到这一点,但登录用户不必看到。我已经尝试了许多我在这里不会详述的选项(工作流、更改本地权限设置的脚本等),因为它们都不起作用。必须有一个标准的方法来做这件事,但我不知道它是什么 有什么想法吗?未经测试,但可能有效:可以根据访问者的IP为他们分配组和角色,而无需为他们创建用户帐户。它

这是给Plone 4的。这是一个相当普遍的问题。我有一个表单(ploneformgen),我想让匿名用户看到并填写,但我想对注册用户(即已登录的用户)隐藏它。同样,我在导航菜单中有一个“登录”链接。显然,匿名用户应该看到这一点,但登录用户不必看到。我已经尝试了许多我在这里不会详述的选项(工作流、更改本地权限设置的脚本等),因为它们都不起作用。必须有一个标准的方法来做这件事,但我不知道它是什么


有什么想法吗?

未经测试,但可能有效:可以根据访问者的IP为他们分配组和角色,而无需为他们创建用户帐户。它还有一个开关,可以只向匿名用户提供自动角色/组。规则
255.255.255.255/0
应该匹配所有IP,这样所有匿名用户都可以获得一个组,并且您可以将表单设置为私有并对该组可见

(请注意,AutoRole尚未准备好IPv6,并且在用户继承方面有一些警告,特别是:它实际上会禁用管理员帐户,因此您不应该在Plone实例中激活它,而是在Zope服务器
acl\u users
,如果可能的话。)

另一个未经测试的想法

有一个不太知名的产品,我从未在生产环境中使用过它(但在我的测试中,它工作得非常好):collective.subtractiveworkflow()和工作流链的使用

实际上,您可以设计第二个工作流,其中将从
成员
角色中减去
查看
权限


老实说,我不能100%确定这如何适用于
匿名
,因为通常情况下,您不能为其他用户定义权限,但不能为其他角色定义权限。在那种情况下可能也是如此。

这看起来很有希望,但我想我错过了一些东西。我安装了AutoRole,激活了它(通过Plone),进入“Plone/acl_用户/auto_角色”上的“属性”选项卡,在“IP筛选器和角色”字段中输入“255.255.255/0:GroupThatCanViewForm”,其中“GroupThatCanViewForm”组的所有成员都可以查看我希望其他用户能够看到的特定表单。然而,它似乎不起作用。我错过什么了吗?我看到还有一个自动群组插件,相关吗?@adam:你需要身份验证、提取、激活标签中的群组;默认安装设置是身份验证、提取、角色,可能就是这样。