使某些页面仅对登录用户可用


9

我需要一些帮助,这是问题所在:

我正在使用Drupal 7构建站点。

我需要使某些页面仅对已登录的用户可见(每个页面都有自己的用户名/密码),应该简单地将其他用户重定向或显示错误消息。这个功能可能包含在Drupal 7本身中吗?或者有一个模块可以做到这一点(比有机组更简单)?

Answers:


7

您需要使用Content Access模块以获得细粒度的节点查看权限。

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


该模块自2013年以来未进行过更新,被称为“尚未稳定”。是否愿意推荐一个目前正在维护的产品?
开拓者2015年

1

如果您希望在模块或节点(带有PHP输入过滤器)中以编程方式进行操作,则可以使用user_is_logged_in()进行以下操作:

<?php
if (!user_is_logged_in()) drupal_not_found();
?>

0

尽管Content Access模块​​很好地解决了该问题,但它是一个额外的模块,并且在D7上还不稳定。

仅使用常用模块的替代方法是:

  1. 创建节点,但将其设置为未发布

  2. 创建一个节点视图,例如“角色限制的内容”。显示完整节点的内容以复制标准节点/%显示。

  3. 将视图限制为所需的角色(例如“角色|经过身份验证的用户”)

  4. 将视图路径设置为:

    restricted-content/%
  5. 通过Nid设置上下文过滤器。

  6. 删除默认的“内容已发布”过滤器。

现在,您将拥有一个与node /%相同的视图,除了它还处理未发布的内容并受角色限制。


1
该视图将显示节点列表,即使它们尚未发布,但没有权限的用户仍无法访问节点。
kiamlaluno

-1

有一个非常简单的程序化解决方案,您可以像这样读取用户角色(以及它是匿名的还是已注册的):

$roles=$GLOBALS['user']->roles;

您将在$ roles中获得一个具有当前用户角色的数组。

您可以根据角色使用某种逻辑重定向该用户,方法是使用

drupal_goto ('url-of-the/page');
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.