จะออกจากระบบผู้ใช้ที่ใช้งานอยู่ทั้งหมดได้อย่างไร?


15

แทนที่จะวางเว็บไซต์ของฉันใน "โหมดการบำรุงรักษา" ฉันต้องการที่จะวางไว้ใน "โหมดอ่านอย่างเดียว" ที่สมบูรณ์ มีโมดูลสำหรับการทำเช่นนั้น แต่จะป้องกัน "โหนดเพิ่มและแก้ไข" เท่านั้น ฉันต้องการป้องกันกิจกรรมของผู้ใช้ทั้งหมดรวมถึงการเข้าสู่ระบบและการลงทะเบียนเพื่อให้ไซต์ได้รับบริการจากแคช (วานิช) ในฐานะที่เป็นประโยชน์ด้านข้างฉันจะใช้ "โหมดอ่านอย่างเดียว" ประเภทนี้หากเว็บไซต์มีน้ำท่วมด้วยคำขอ

คำถามของฉัน: ฉันจะออกจากผู้ใช้ที่ใช้งานอยู่ทั้งหมดได้อย่างไร? การเข้าสู่ระบบและการลงทะเบียนที่ฉันสามารถเปลี่ยนเส้นทางด้วยเบ็ด

คำตอบ:


13

เท่าที่ฉันรู้คุณสามารถล้างตารางเซสชันและผู้ใช้ทั้งหมดจะถูกออกจากระบบ อาจมีปัญหาขึ้นอยู่กับโมดูลที่คุณติดตั้ง ตัวอย่างเช่นโมดูลที่ใช้hook_user_logout()จะไม่ถูกดำเนินการกระทำซึ่งอาจเป็นปัญหา ตรวจสอบเพื่อให้แน่ใจว่าไม่มีโมดูลที่ติดตั้งของคุณกำลังใช้งาน hook นี้


4
ดังที่ @ F1234k กล่าวว่าการลบตารางเซสชันจะไม่ถูกเรียกใช้ hook_user_logout () แต่คุณสามารถกระตุ้นให้ตัวคุณเอง เลือก uid ทั้งหมดจากตารางเซสชันและเรียกใช้งานมากกว่า `module_invoke_all ('user_logout', $ user);` สำหรับแต่ละรายการ คุณสามารถกรองตามรายการที่เปิดเซสชันไว้นานกว่า 1 ชั่วโมง (เซสชันใน Drupal สามารถเปิดใช้งานได้ไม่ จำกัด )
Alexandru Savin

ขอบคุณ ฉันจะต้องเริ่มการล็อกเอาต์มิฉะนั้นฉันจะได้รับ WSOD สำหรับผู้ใช้ที่เข้าสู่ระบบด้วยโมดูล "เข้าสู่ระบบถาวร"
Uwe

13

คุณสามารถล้างตารางเซสชันโดยใช้ drush

drush sqlq "TRUNCATE sessions"

หรือถ้าคุณตั้งค่าคำนำหน้าสำหรับชื่อตาราง:

drush sqlq --db-prefix "TRUNCATE {sessions}"

0

คุณสามารถบังคับให้ออกจากระบบผู้ใช้ทุกคนผ่านทาง hook update:

/**
 * Force to logout all the users.
 */
function mymodule_update_7001() {
  db_truncate('sessions')->execute();
}

0

ใช้โมดูลบังคับล็อกเอาต์ ..

คุณสมบัติ

  • แบบฟอร์มการตั้งค่าที่คุณสามารถเปิดใช้งานและปิดใช้งาน (บังคับล็อกเอาต์)
  • การอนุญาตเพื่อให้คุณสามารถยกเว้นบทบาทผู้ใช้บางอย่างได้หากคุณต้องการยกเว้นผู้ดูแลระบบเช่น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.