Как перенаправить анонимных пользователей на страницу входа с помощью модуля «Правила»?


12

Я использую модуль правил с drupal 7 для перенаправления анонимных пользователей на страницу входа в систему, поэтому я создал правило с реакцией на событие «Инициализируется Drupal», условие «Пользователь имеет роль» с анонимным пользователем и «URL-адрес входа не на сайт» ", затем добавили действие" Перенаправление страницы "в URL для входа на сайт. Когда я пытался проверить правило; drupal продолжал перенаправлять на страницу входа снова и снова, пока сервер apache не перестал работать. Любые рекомендации.


может ли анонимный пользователь исследовать контент сайта? по какой причине нужно перенаправить страницу входа?
monymirza

анонимным пользователям не разрешается изучать контент сайта, и им не разрешается регистрироваться, кроме как по приглашению. Пользователи должны войти, чтобы использовать сайт.
Aboodred1

Я не понимаю эту часть «Правило drupal продолжало перенаправлять на страницу входа, не показывая ее». Не могли бы вы объяснить, что вы имеете в виду? В противном случае я не уверен, что понимаю, какая часть не работает.
Борина Дитчева

Хорошо, когда я захожу на домашнюю или любую другую страницу, но не на страницу входа, правило работает нормально; он перенаправляет пользователя на страницу входа, однако браузер продолжает перенаправлять на страницу входа снова и снова, пока apache не перестанет работать.
Aboodred1

если анонимным пользователям не разрешено исследовать контент сайта, удалите разрешение на просмотр контента
monymirza

Ответы:


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

Я сделал ошибку, и она работает.
TopTomato

@TopTomato Удивительно! Рад, что это сработало для вас.
Aboodred1

3

Перейти к /admin/people/permissionsснимите флажок Просмотр опубликованного контента для анонимных пользователей

введите описание изображения здесь

Теперь перейдите, чтобы /admin/config/system/site-informationдобавить пользователя в поле доступа (отказано в доступе).

введите описание изображения здесь


Хорошая работа, но мне все еще нужно показать страницу с отказом в доступе, потому что не все пользователи имеют одинаковые разрешения. Я ценю вашу помощь.
Aboodred1

затем удалите «пользователя» из поля (доступ запрещен) на 2-м шаге
monymirza

если я уберу это; анонимные пользователи могут видеть только запрещенный доступ без перенаправления на страницу входа. Я уверен, что есть способ, которым я могу сделать это в модуле правил
Aboodred1

да. далее можно сделать с помощью модуля правил. Вы также можете сделать это через модуль ядра триггера.
monymirza

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 is initializing"
Aboodred1

@ Шанс, мне любопытно. Где это будет жить в файле .theme?
TikaL13

0

Проблема здесь - рассматриваемое событие. Вместо того Drupal is initializing, чтобы попробовать Content is viewed.


Я попробовал это, прежде чем отправить этот вопрос, и он работал нормально со мной, за исключением просмотра страниц, страницы регистрации, практически любой страницы, которая не является узлом.
Aboodred1

0

Я знаю, что это пост два года назад. Тем не менее, решение для перенаправления анонимного пользователя на страницу входа пользователя с правилами заключается в следующем:

  • событие: запись в системном журнале создана
  • условие: пользователь имеет роль (и): анонимный
  • действие: значение перенаправления страницы: пользователь

Надеюсь, это кому-нибудь поможет.


Вы пробовали свое решение, прежде чем опубликовать его здесь?
Aboodred1
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.