如何使用“规则”模块将匿名用户重定向到登录页面?


12

我在drupal 7中使用了规则模块,以便将匿名用户重定向到登录页面,因此我创建了一个规则,对事件“ Drupal正在初始化”,条件“用户具有角色”和匿名用户以及“非站点登录URL”做出了反应”,然后将操作“页面重定向”添加到网站登录网址。当我尝试测试规则时;drupal不断反复重定向到登录页面,直到apache服务器停止工作。任何建议。


匿名用户可以浏览网站内容吗?出于什么原因需要重定向登录页面?
monymirza

除非有邀请,否则匿名用户不得浏览任何网站内容,也不得注册。用户必须登录才能使用该站点。
Aboodred1 2012年

我不理解“规则drupal不断重定向到登录页面而不显示它”这一部分。您能解释一下您的意思吗?否则,我不确定我了解哪个部分不起作用。
Boriana Ditcheva 2012年

好吧,当我转到主页或其他任何页面但不登录页面时,规则运行良好;其将用户重定向到登录页面,但是浏览器会不断反复重定向到登录页面,直到apache停止工作。
Aboodred1 2012年

如果不允许匿名用户浏览任何网站内容,则删除查看内容的权限
monymirza 2012年

Answers:


12

我解决它的方式如下:

  • 事件: Drupal正在初始化
  • 条件:

    1. 用户具有的角色 -Parameter: User: [site:current-user], Roles: anonymous user
    2. 非文字比较 -Parameter: Text: [site:current-page:url], Matching text: user/login
  • 操作: 页面重定向 -Parameter: URL: user/login


导出规则如下:

{ "rules_login" : {
    "LABEL" : "login",
    "PLUGIN" : "reaction rule",
    "OWNER" : "rules",
    "TAGS" : [ "login" ],
    "REQUIRES" : [ "rules" ],
    "ON" : { "init" : [] },
    "IF" : [
      { "user_has_role" : {
          "account" : [ "site:current-user" ],
          "roles" : { "value" : { "1" : "1" } }
        }
      },
      { "NOT text_matches" : { "text" : [ "site:current-page:url" ], "match" : "user\/login" } }
    ],
    "DO" : [ { "redirect" : { "url" : "user\/login" } } ]
  }
}

@TopTomato这是为drupal 7
Aboodred1 '16

我犯了一个错误,它正在工作。
TopTomato

@TopTomato太棒了!很高兴它对你有效。
Aboodred1年

3

转到/admin/people/permissions匿名用户取消选中查看发布的内容

在此处输入图片说明

现在/admin/config/system/site-information在(访问被拒绝)页面字段中添加“用户”

在此处输入图片说明


很好的解决方法,但是我仍然需要显示拒绝访问页面,因为并非所有用户都具有相同的权限。我感谢您的帮助。
Aboodred1 2012年

然后在第二步从(访问被拒绝)页面字段中删除“用户”
monymirza

如果我删除它;匿名用户只能看到拒绝访问,而无需重定向到登录页面。我敢肯定,有一种方法可以在“规则”模块中完成
Aboodred1 2012年

是。进一步可以通过“规则”模块完成。您也可以通过触发核心模块来实现。
monymirza 2012年

1
如果某人的访问被拒绝并不意味着他们没有登录。请参阅此答案
Tanvir Ahmad

1

我相信您可以通过规则来实现这一点,但是在主题的template.php文件中也很容易做到。

这样的事情应该起作用:

global $user;
if ($user->uid == 0 && arg(0) != 'user' && arg(1) != 'login'){
  drupal_goto('user/login');
}

或者,如果仍然需要访问用户/注册和用户/密码页面:

global $user;
if ($user->uid == 0 && arg(0) != 'user'){
  drupal_goto('user/login');
}

感谢@Chance,在发布问题之前,我已经找到了该解决方案。我想使用规则模块,或者至少要了解为什么它不能与“ Drupal正在初始化”一起使用
Aboodred1 2012年

@机会,我很好奇。.theme文件中的哪个位置?
TikaL13

0

这里的问题是有关事件。代替Drupal is initializing尝试Content is viewed


在发布此问题之前,我已经尝试过了,并且除了查看页面,注册页面,基本上不是节点的任何页面之外,它都可以正常工作。
2012年

0

我知道这是两年前的帖子。但是,使用规则将匿名用户重定向到用户登录页面的解决方案如下:

  • 事件:系统日志条目已创建
  • 条件:用户具有的角色:匿名
  • 行动:页面重定向值:用户

希望这会帮助某人。


在将其发布到这里之前,您是否尝试过解决方案?
Aboodred1 2014年
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.