Wie leite ich anonyme Benutzer mit dem Modul "Regeln" zur Anmeldeseite um?

12

Ich verwende das Regelmodul mit Drupal 7, um anonyme Benutzer auf die Anmeldeseite umzuleiten. Daher habe ich eine Regel erstellt, mit der auf das Ereignis "Drupal wird initialisiert" reagiert wird und der Bedingung "Benutzer hat Rolle" mit anonymen Benutzern und "URL für Nicht-Site-Anmeldung" "und fügte dann eine Aktion" Seitenumleitung "zur Anmelde-URL der Site hinzu. Als ich versuchte, die Regel zu testen; Drupal leitete immer wieder auf die Anmeldeseite um, bis der Apache-Server nicht mehr funktionierte. Irgendwelche Empfehlungen.

Aboodred1
quelle
Kann ein anonymer Benutzer den Inhalt der Website durchsuchen? Aus welchem ​​Grund muss die Anmeldeseite umgeleitet werden?
Monymirza
Anonyme Benutzer dürfen den Inhalt der Website nicht durchsuchen und sich nur mit einer Einladung registrieren. Benutzer müssen sich anmelden, um die Site zu nutzen.
Aboodred1
Ich verstehe diesen Teil nicht. "Regel Drupal hat weiter auf die Anmeldeseite umgeleitet, ohne es zu zeigen." Können Sie erklären, was Sie meinen? Ansonsten bin ich mir nicht sicher, welches Teil nicht funktioniert.
Boriana Ditcheva
Wenn ich auf die Homepage oder eine andere Seite gehe, aber nicht auf die Anmeldeseite, funktioniert die Regel einwandfrei. Es leitet den Benutzer zur Anmeldeseite weiter, der Browser leitet jedoch so lange zur Anmeldeseite weiter, bis Apache nicht mehr funktioniert.
Aboodred1
Wenn anonyme Benutzer keinen
Websiteinhalt durchsuchen

Antworten:

12

So habe ich es gelöst:

  • Ereignisse: Drupal wird initialisiert
  • Bedingungen:

    1. Benutzer hat Rolle (n) -Parameter: User: [site:current-user], Roles: anonymous user
    2. NICHT Textvergleich -Parameter: Text: [site:current-page:url], Matching text: user/login
  • Aktionen: Seitenumleitung -Parameter: URL: user/login


Exportregel wie folgt:

{ "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" } } ]
  }
}
Aboodred1
quelle
@TopTomato Dies ist für Drupal 7
Aboodred1
Ich habe einen Fehler gemacht und es funktioniert.
TopTomato
@TopTomato Super! Ich bin froh, dass es für dich funktioniert hat.
Aboodred1
3

/admin/people/permissionsDeaktivieren Sie das Kontrollkästchen Veröffentlichten Inhalt für anonyme Benutzer anzeigen

Bildbeschreibung hier eingeben

Gehen Sie nun zum /admin/config/system/site-informationHinzufügen von 'Benutzer' im Seitenfeld (Zugriff verweigert)

Bildbeschreibung hier eingeben

monymirza
quelle
Gute Arbeit um, aber ich muss immer noch Zugriff verweigert Seite anzeigen, weil nicht alle Benutzer die gleichen Berechtigungen haben. Ich schätze Ihre Hilfe.
Aboodred1
dann entferne 'user' vom (Zugriff verweigert) Seitenfeld im 2. Schritt
monymirza
wenn ich es entferne; Anonyme Benutzer können nur den verweigerten Zugriff sehen, ohne auf die Anmeldeseite umzuleiten. Ich bin sicher, dass es eine Möglichkeit gibt, dies im
Regelmodul zu
Ja. Weitere Funktionen können über das Regelmodul ausgeführt werden. Sie können dies auch über das Trigger Core-Modul tun.
Monymirza
1
Wenn jemand Zugriff verweigert hat, bedeutet dies nicht, dass er nicht angemeldet ist. Siehe diese Antwort
Tanvir Ahmad
1

Ich bin sicher, dass Sie dies mit Regeln erreichen können, aber es wäre auch einfach, dies in der template.php-Datei Ihres Themas zu tun.

So etwas sollte funktionieren:

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

Oder wenn der Zugriff auf die Benutzer- / Registrierungs- & Benutzer- / Passwortseiten weiterhin gewünscht ist:

global $user;
if ($user->uid == 0 && arg(0) != 'user'){
  drupal_goto('user/login');
}
Chance G
quelle
Danke @Chance Ich habe diese Lösung bereits gefunden, bevor ich meine Frage gestellt habe. Ich möchte das
Regelmodul
@Chance, ich bin neugierig. Wo würde dies in der .theme-Datei leben?
TikaL13
0

Das Problem hier ist das fragliche Ereignis. Drupal is initializingVersuchen Sie es stattdessen Content is viewed.

joedougherty
quelle
Ich habe es versucht, bevor ich diese Frage poste, und es hat bei mir gut funktioniert, außer mit Seiten anzeigen, Registrierungsseite, im Grunde jede Seite, die kein Knoten ist.
Aboodred1
0

Ich weiß, dass dies ein Beitrag von vor zwei Jahren ist. Die Lösung zum Umleiten eines anonymen Benutzers zur Benutzeranmeldeseite mit Regeln lautet jedoch wie folgt:

  • Ereignis: Systemprotokolleintrag wird erstellt
  • Bedingung: Benutzer hat Rolle (n): anonym
  • Aktion: Seitenumleitungswert: Benutzer

Hoffe das wird jemandem helfen.

Gabke
quelle
Haben Sie Ihre Lösung ausprobiert, bevor Sie sie hier veröffentlichen?
Aboodred1