Làm cách nào để tôi có thể đăng xuất người dùng khác trong D7?


8

Trên trang web của chúng tôi, chúng tôi có tài khoản khách hàng, mỗi người có một quản trị viên và người dùng phụ thuộc tài khoản đó.

Chúng tôi muốn siêu quản trị viên có thể buộc người dùng phụ đăng xuất. Cách tốt nhất để phá hủy phiên của người dùng trong Drupal hoạt động bất kể thông tin phiên được lưu trữ trong Redis, Memcache hay cơ sở dữ liệu là gì?

Trước khi ai đó cảm thấy muốn đề xuất user_logout (), điều đó sẽ phá hủy phiên của người dùng hiện tại . Tôi muốn người dùng hiện tại có thể phá hủy một phiên người dùng khác !


Gần như chắc chắn chúng tôi đã có một câu hỏi về điều này. Tôi biết tôi có một bản vá trong drush-bổ sung để có thể làm điều này, nhưng nó đã không được thực hiện.
mpdon Arena

Tôi googled xung quanh và tìm kiếm xung quanh DA, nhưng không có may mắn. Tôi sẽ xem xét bản vá của bạn. EDIT: Bản vá của bạn không may chỉ xử lý trường hợp cơ sở dữ liệu. Chúng tôi đã hy vọng sử dụng memcache với số lượng lớn người dùng / phiên!
BrianV

1
Tôi tin rằng việc chặn / bỏ chặn người dùng có tác dụng tương tự (ngoại trừ họ có thể sẽ nhận được thông báo qua email về việc bỏ chặn). Bạn có thể có thể sử dụng hook_mail_alter()để chặn e-mail đó và chặn nó.
tyler.frankenstein

Câu trả lời:


6

drupal_session_destroy_uid() Nghe có vẻ như đặt cược an toàn:

Kết thúc một phiên người dùng cụ thể.

Việc triển khai cốt lõi sẽ xóa cơ sở dữ liệu, như bạn mong đợi, nhưng bất kỳ mô-đun nào ghi đè session.inc và không cung cấp triển khai hoạt động của chức năng đó, chắc chắn sẽ bị coi là bị hỏng ( user_delete_multiple()và các chức năng khác cần nó).

Vì vậy, trên lý thuyết bạn sẽ có thể sử dụng chức năng đó bất kể lưu trữ.


bỏ phiếu, đây là giải pháp tốt
Yusef

Đây là giải pháp chính xác! Đối với độc giả tương lai, nó được thực hiện trong memcache. Xem cgit.drupalcode.org/memcache/tree/unstable/...
BrianV

1

Proxy phiên cung cấp một sự thay thế chung cho việc xử lý phiên của Drupal được cho là hoạt động với nhiều phụ trợ khác nhau.
Như vậy nó cũng thực hiện drupal_session_destroy_uid().

Lưu ý rằng việc triển khai phiên Memcache API và Integration được coi là không ổn định và người duy trì Redis khuyến nghị sử dụng Proxy phiên .

Các vấn đề về xử lý các phiên liên tục trên các phụ trợ khác nhau được nêu trong vấn đề 1260634 .


0

Trong Drupal 7, Chúng tôi có thể đăng xuất người dùng nếu chúng tôi có User_ID của anh ấy bằng db_delete ():

db_delete('sessions')->condition('uid', $User_ID)->execute();
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.