Di situs kami, kami memiliki akun klien, masing-masing dengan super administrator dan sub pengguna milik akun itu.
Kami ingin super admin dapat memaksa sub pengguna untuk keluar. Apa cara terbaik untuk menghancurkan sesi pengguna di Drupal yang berfungsi terlepas dari apakah informasi sesi disimpan dalam Redis, Memcache atau database?
Sebelum seseorang merasa tergoda untuk menyarankan user_logout (), itu menghancurkan sesi pengguna saat ini. Saya ingin pengguna saat ini dapat menghancurkan sesi pengguna yang berbeda !
hook_mail_alter()
untuk mencegat surel itu dan menekannya.Jawaban:
drupal_session_destroy_uid()
terdengar seperti taruhan yang aman:Implementasi inti membersihkan basis data, seperti yang Anda harapkan, tetapi modul apa pun yang mengesampingkan session.inc, dan tidak menyediakan implementasi yang berfungsi dari fungsi itu, pasti akan dianggap rusak (seperti
user_delete_multiple()
dan fungsi lainnya memerlukannya).Jadi secara teori Anda harus dapat menggunakan fungsi itu terlepas dari penyimpanannya.
sumber
Session Proxy menyediakan pengganti generik untuk penanganan sesi Drupal yang seharusnya bekerja dengan berbagai backend.
Karena itu juga mengimplementasikan
drupal_session_destroy_uid()
.Perhatikan bahwa implementasi sesi Memcache API dan Integrasi dianggap tidak stabil , dan bahwa pengelola Redis merekomendasikan penggunaan Session Proxy .
Masalah penanganan sesi secara konsisten di berbagai backend diuraikan dalam edisi 1260634 .
sumber
Di Drupal 7, Kita bisa keluar pengguna jika kita memiliki User_ID menggunakan db_delete ():
sumber