Làm cách nào để chuyển hướng người dùng ẩn danh đến trang đăng nhập bằng mô-đun Rules?


12

Tôi đang sử dụng mô-đun quy tắc với drupal 7 để chuyển hướng người dùng ẩn danh đến trang đăng nhập, vì vậy tôi đã tạo quy tắc phản ứng về sự kiện "Drupal đang khởi tạo", với điều kiện "Người dùng có vai trò" với người dùng ẩn danh và "Không phải url đăng nhập trang web ", Sau đó thêm một hành động" Chuyển hướng trang "vào url đăng nhập trang web. Khi tôi cố gắng kiểm tra quy tắc; drupal tiếp tục chuyển hướng đến trang đăng nhập nhiều lần cho đến khi máy chủ apache ngừng hoạt động. Bất kỳ khuyến nghị.


người dùng ẩn danh có thể khám phá nội dung trang web? Vì lý do gì cần phải chuyển hướng trang đăng nhập?
monymirza

Người dùng ẩn danh không được phép khám phá bất kỳ nội dung trang web nào và không được phép đăng ký trừ khi có lời mời. Người dùng phải đăng nhập để sử dụng trang web.
Aboodred1

Tôi không hiểu phần này "quy tắc drupal tiếp tục chuyển hướng đến trang đăng nhập mà không hiển thị nó." Bạn có thể giải thích những gì bạn có ý nghĩa? Mặt khác, tôi không chắc là tôi hiểu phần nào không hoạt động.
Boriana Ditcheva

Vâng, khi tôi đi đến trang chủ hoặc bất kỳ trang nào khác nhưng không đăng nhập trang, quy tắc hoạt động tốt; nó chuyển hướng người dùng đến trang đăng nhập, tuy nhiên trình duyệt tiếp tục chuyển hướng đến trang đăng nhập nhiều lần cho đến khi apache ngừng hoạt động.
Aboodred1

nếu người dùng ẩn danh không được phép khám phá bất kỳ nội dung trang web nào, thì hãy xóa quyền xem nội dung
monymirza

Câu trả lời:


12

Cách tôi giải quyết như sau:

  • Sự kiện: Drupal đang khởi tạo
  • Điều kiện:

    1. Người dùng có vai trò -Parameter: User: [site:current-user], Roles: anonymous user
    2. KHÔNG so sánh văn bản -Parameter: Text: [site:current-page:url], Matching text: user/login
  • Hành động: Chuyển hướng trang -Parameter: URL: user/login


Quy tắc xuất khẩu như sau:

{ "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 này dành cho drupal 7
Aboodred1

tôi đã làm một lỗi và nó đang làm việc.
TopTomato

@TopTomato Tuyệt vời! Vui mừng nó đã làm việc cho bạn.
Aboodred1

3

Đi tới /admin/people/permissionsbỏ chọn Xem nội dung được xuất bản cho người dùng ẩn danh

nhập mô tả hình ảnh ở đây

bây giờ hãy /admin/config/system/site-informationthêm trường 'người dùng' vào (truy cập bị từ chối)

nhập mô tả hình ảnh ở đây


làm việc tốt, nhưng tôi vẫn cần hiển thị trang bị từ chối vì không phải tất cả người dùng đều có quyền. Tôi đánh giá cao sự giúp đỡ của bạn.
Aboodred1

sau đó xóa 'người dùng' khỏi trường (truy cập bị từ chối) ở bước thứ 2
monymirza

nếu tôi loại bỏ nó; Người dùng ẩn danh chỉ có thể thấy quyền truy cập bị từ chối mà không chuyển hướng đến trang đăng nhập. Tôi chắc chắn rằng có một cách tôi có thể làm điều đó trong mô-đun quy tắc
Aboodred1

Đúng. hơn nữa có thể được thực hiện bởi các quy tắc mô-đun. bạn cũng có thể làm điều đó thông qua mô-đun lõi kích hoạt.
monymirza

1
Nếu ai đó có quyền truy cập bị từ chối không có nghĩa là họ không đăng nhập. Xem Câu trả lời này
Tanvir Ahmad

1

Tôi chắc chắn rằng bạn có thể thực hiện điều này bằng các quy tắc, nhưng nó cũng sẽ dễ dàng thực hiện trong tệp template.php của chủ đề của bạn.

Một cái gì đó như thế này sẽ hoạt động:

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

Hoặc, nếu vẫn truy cập vào trang người dùng / đăng ký & người dùng / mật khẩu:

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

Cảm ơn @Chance Tôi đã tìm thấy giải pháp này trước khi tôi đăng câu hỏi của mình. Tôi muốn sử dụng mô-đun quy tắc hoặc ít nhất là hiểu lý do tại sao nó không hoạt động với "Drupal đang khởi tạo"
Aboodred1

@Chance, tôi tò mò. Nơi này sẽ sống trong tập tin .theme?
TikaL13

0

Vấn đề ở đây là sự kiện trong câu hỏi. Thay vì Drupal is initializing, hãy thử Content is viewed.


Tôi đã thử nó trước khi tôi đăng câu hỏi này và nó hoạt động tốt với tôi ngoại trừ với các trang xem, trang đăng ký, về cơ bản bất kỳ trang nào không phải là nút.
Aboodred1

0

Tôi biết đây là một bài viết từ hai năm trước. Tuy nhiên, giải pháp chuyển hướng người dùng ẩn danh đến trang đăng nhập người dùng với các quy tắc như sau:

  • sự kiện: Mục nhật ký hệ thống được tạo
  • điều kiện: Người dùng có vai trò: ẩn danh
  • hành động: giá trị chuyển hướng trang: người dùng

Hy vọng điều này sẽ giúp được ai đó.


Bạn đã thử giải pháp của bạn trước khi bạn đăng nó ở đây?
Aboodred1
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.