Bagaimana cara mengarahkan pengguna anonim ke halaman login menggunakan modul Aturan?


12

Saya menggunakan modul aturan dengan drupal 7 untuk mengarahkan pengguna anonim ke halaman login, jadi saya membuat aturan dengan bereaksi pada acara "Drupal menginisialisasi", syarat "Pengguna memiliki peran" dengan pengguna anonim dan "Bukan url masuk situs ", lalu menambahkan tindakan" Pengalihan halaman "ke url login situs. Ketika saya mencoba menguji aturan; drupal terus mengarahkan ke halaman login berulang-ulang sampai server apache berhenti bekerja. Setiap rekomendasi.


dapatkah pengguna anonim menjelajahi konten situs? untuk alasan apa perlu mengarahkan halaman login?
monymirza

pengguna anonim tidak diizinkan untuk menjelajahi konten situs apa pun dan tidak diizinkan mendaftar kecuali dengan undangan. Pengguna harus masuk untuk menggunakan situs ini.
Aboodred1

Saya tidak mengerti bagian ini "aturan drupal terus mengarahkan ke halaman login tanpa menunjukkannya." Bisakah Anda menjelaskan maksud Anda? Kalau tidak, saya tidak yakin saya mengerti bagian mana yang tidak berfungsi.
Boriana Ditcheva

Yah ketika saya pergi ke beranda atau halaman lain tetapi tidak masuk halaman aturannya berfungsi dengan baik; ini mengarahkan pengguna ke halaman login, namun browser terus mengarahkan ke halaman login berulang-ulang sampai apache berhenti berfungsi.
Aboodred1

jika pengguna anonim tidak diizinkan menjelajahi konten situs apa pun, maka hapus izin untuk melihat konten
monymirza

Jawaban:


12

Cara saya menyelesaikannya sebagai berikut:

  • Acara: Drupal sedang diinisialisasi
  • Kondisi:

    1. Pengguna memiliki peran -Parameter: User: [site:current-user], Roles: anonymous user
    2. BUKAN perbandingan teks -Parameter: Text: [site:current-page:url], Matching text: user/login
  • Tindakan: Pengalihan halaman -Parameter: URL: user/login


Aturan ekspor sebagai berikut:

{ "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" } } ]
  }
}

@ TopTomat, ini untuk drupal 7
Aboodred1

saya membuat kesalahan dan berfungsi.
TopTomato

@ TopTomato Luar Biasa! Senang itu berhasil untuk Anda.
Aboodred1

3

Pergi ke /admin/people/permissionshapus centang Lihat konten yang diterbitkan untuk pengguna anonim

masukkan deskripsi gambar di sini

sekarang pergi untuk /admin/config/system/site-informationmenambahkan 'pengguna' di bidang halaman (akses ditolak)

masukkan deskripsi gambar di sini


kerja bagus, tapi saya masih perlu menunjukkan akses halaman ditolak karena tidak semua pengguna memiliki izin yang sama. Saya menghargai bantuan Anda.
Aboodred1

lalu hapus 'pengguna' dari bidang halaman (akses ditolak) pada langkah ke-2
monymirza

jika saya menghapusnya; pengguna anonim hanya dapat melihat akses ditolak tanpa mengarahkan ke halaman login. Saya yakin ada cara saya bisa melakukannya dalam modul aturan
Aboodred1

Iya. selanjutnya dapat dilakukan dengan modul aturan. Anda juga dapat melakukannya melalui modul inti pemicu.
monymirza

1
Jika seseorang memiliki akses ditolak bukan berarti mereka tidak login. Lihat Jawaban Ini
Tanvir Ahmad

1

Saya yakin Anda dapat melakukan ini dengan aturan, tetapi akan mudah dilakukan di file template.php tema Anda juga.

Sesuatu seperti ini seharusnya bekerja:

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

Atau, jika akses ke halaman pengguna / registrasi & pengguna / kata sandi masih diinginkan:

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

Terima kasih @ Kesempatan Saya sudah menemukan solusi ini sebelum saya memposting pertanyaan saya. Saya ingin menggunakan modul aturan atau setidaknya mengerti mengapa ini tidak bekerja dengan "Drupal sedang menginisialisasi"
Aboodred1

@ Kebetulan, saya ingin tahu. Di mana ini akan tinggal dalam file tema?
TikaL13

0

Masalahnya di sini adalah peristiwa yang dimaksud. Alih-alih Drupal is initializing, coba Content is viewed.


Saya mencobanya sebelum saya memposting pertanyaan ini dan itu berhasil dengan saya kecuali dengan melihat halaman, halaman pendaftaran, pada dasarnya setiap halaman yang bukan simpul.
Aboodred1

0

Saya tahu ini adalah posting dari dua tahun lalu. Namun, solusi untuk mengarahkan pengguna anonim ke halaman login pengguna dengan aturan adalah sebagai berikut:

  • acara: Entri log sistem dibuat
  • kondisi: Pengguna memiliki peran: anonim
  • aksi: nilai pengalihan halaman: pengguna

Semoga ini bisa membantu seseorang.


Sudahkah Anda mencoba solusi Anda sebelum memposting di sini?
Aboodred1
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.