如何根据用户角色限制节点访问?[关闭]


8

如何仅允许基于用户角色显示特定节点?

基本上,我不想让某些特定角色的用户访问节点。


3
不知道为什么他们关闭了您的问题,这是一个好问题。对于任何有兴趣的人,我总是通过制作一个自定义模块并覆盖api.drupal.org/api/drupal/modules%21node%21node.api.php/来解决这些类型的问题……完全控制,没有大量模块形式的间接费用,方法更轻松,更可靠。
coderama

1
@coderama有点宽泛,没有OP显示他们到目前为止所做的尝试。这样的问题会得到广泛的答案,可能对将来的用户没有帮助。
kiamlaluno

Answers:


3

您是否尝试过内容访问模块

该模块允许您按角色和作者管理内容类型的权限。它允许您指定每种内容类型的自定义视图,编辑和删除权限。(可选)您可以启用每个内容访问设置,以便可以自定义每个内容节点的访问。


1
如果您不需要基于节点的权限,那么一个更简单的模块是节点视图权限模块,该模块仅基于内容类型和用户角色来控制访问。
jevon

1
此模块是Drupal 7(测试版)的测试版
Toby Allen

16

您正在谈论的是Drupal节点访问控制,这是一个巨大的主题。

内核对节点访问控制的内置支持相当粗糙,要控制访问以按角色查看节点,必须使用某种类型的节点访问控制模块。

Drupal.org上有一个页面,列出了所有节点访问模块,并对每个模块进行了囊式审查。我建议您看一下该页面,看看是否可以找到合适的模块来基于角色控制访问。

在使用访问控制时,它有助于理解Drupal访问控制模块的实际工作方式,这里是一个简短的描述:

  1. 被授予管理节点权限的用户永远不会受到节点访问控制的限制。没有访问查看已发布内容权限的用户永远不会被节点访问模块授予访问权限。只有具有“访问内容”而不是“管理节点”的用户才有资格使用节点访问模块控制的狂野世界。

  2. 通常,Drupal中的节点访问控制是附加功能。这意味着,任何按照“ Drupal哲学”进行访问控制的模块都应仅允许访问,而不是拒绝访问。想要微调对节点的访问权限的管理员必须首先确保没有人具有访问权限,然后将访问权限添加到应具有访问权限的任何人。

这意味着使用诸如Content Access之类的模块来限制对个人的访问可能很麻烦,因为您必须首先拒绝所有人的访问,然后再将其重新添加到您不希望受到限制的那些节点上。但是,如果您确实需要逐个节点执行此操作,那么我认为这是最佳选择。它的主要解决方案是内容类型,但是它允许您为单个节点覆盖此内容。

不幸的是,您将无法使用“拒绝”访问权限,因为它仅适用于内容类型,而不能覆盖单个节点。

注意:建议使用多个节点访问模块。

请注意,如果您可以更改要求,以便可以将内容类型用作节点访问控制的基本单位,那么拒绝访问将是理想的选择。例如,如果您具有“学生”角色,并且想要拒绝访问具有答案的节点,则可以创建内容类型“答案”(可以只是默认“文章”的副本),并且拒绝访问将请注意保护“ Answer”类型的所有节点,以免被“学生”角色看到。


1
基本上我不想让某些特定角色的用户访问节点,这很难实施吗?
2013年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.