如何仅允许基于用户角色显示特定节点?
基本上,我不想让某些特定角色的用户访问节点。
如何仅允许基于用户角色显示特定节点?
基本上,我不想让某些特定角色的用户访问节点。
Answers:
您正在谈论的是Drupal节点访问控制,这是一个巨大的主题。
内核对节点访问控制的内置支持相当粗糙,要控制访问以按角色查看节点,必须使用某种类型的节点访问控制模块。
Drupal.org上有一个页面,列出了所有节点访问模块,并对每个模块进行了囊式审查。我建议您看一下该页面,看看是否可以找到合适的模块来基于角色控制访问。
在使用访问控制时,它有助于理解Drupal访问控制模块的实际工作方式,这里是一个简短的描述:
被授予管理节点权限的用户永远不会受到节点访问控制的限制。没有访问查看已发布内容权限的用户永远不会被节点访问模块授予访问权限。只有具有“访问内容”而不是“管理节点”的用户才有资格使用节点访问模块控制的狂野世界。
通常,Drupal中的节点访问控制是附加功能。这意味着,任何按照“ Drupal哲学”进行访问控制的模块都应仅允许访问,而不是拒绝访问。想要微调对节点的访问权限的管理员必须首先确保没有人具有访问权限,然后将访问权限添加到应具有访问权限的任何人。
这意味着使用诸如Content Access之类的模块来限制对个人的访问可能很麻烦,因为您必须首先拒绝所有人的访问,然后再将其重新添加到您不希望受到限制的那些节点上。但是,如果您确实需要逐个节点执行此操作,那么我认为这是最佳选择。它的主要解决方案是内容类型,但是它允许您为单个节点覆盖此内容。
不幸的是,您将无法使用“拒绝”访问权限,因为它仅适用于内容类型,而不能覆盖单个节点。
注意:不建议使用多个节点访问模块。
请注意,如果您可以更改要求,以便可以将内容类型用作节点访问控制的基本单位,那么拒绝访问将是理想的选择。例如,如果您具有“学生”角色,并且想要拒绝访问具有答案的节点,则可以创建内容类型“答案”(可以只是默认“文章”的副本),并且拒绝访问将请注意保护“ Answer”类型的所有节点,以免被“学生”角色看到。