ดังที่ @Tushar กล่าวถึง คุณสามารถใช้ไฟล์ user_logout()
การทำงาน.
วิธีที่ง่ายที่สุดที่ฉันเห็นคือการออกจากระบบผู้ใช้ของคุณด้วยการโทร AJAX เมื่อ JS ของคุณตรวจพบว่าผู้ใช้จำเป็นต้องออกจากระบบ นี่คือตัวอย่างเบื้องต้นของวิธีดำเนินการดังกล่าว
ใน JS ของคุณ คุณต้องเพิ่ม:
Drupal.behaviors.logout= {
แนบ: ฟังก์ชัน (บริบท การตั้งค่า) {
ถ้า (yourConditionToLogOutUserisMet) {
$.ajax({
url: "/log-me-out", // เส้นทางที่กำหนดเองเพื่อออกจากระบบผู้ใช้ปัจจุบัน
ความสำเร็จ: ฟังก์ชัน (ข้อมูล) {
// ทำทุกอย่างที่คุณต้องการเมื่อการโทร ajax ของคุณสำเร็จ
}
});
}
}
}
จากนั้น สร้างเส้นทางที่กำหนดเองของคุณใน gps_test.routing.yml
gps_test.my_custom_log_out:
เส้นทาง: '/log-me-out'
ค่าเริ่มต้น:
_controller: '\Drupal\gps_test\Controller\MyLogOutController::logUserOut'
ความต้องการ:
_permission: 'เข้าถึงเนื้อหา'
และสุดท้าย สร้างตัวควบคุมเส้นทาง:
เนมสเปซ Drupal\gps_test\Controller;
ใช้ Drupal\Core\Controller\ControllerBase;
ใช้ Symfony\Component\HttpFoundation\JsonResponse
คลาส MyLogOutController ขยาย ControllerBase {
ฟังก์ชัน logUserOut () {
ถ้า ($this->currentUser()->isAuthenticated()) {
user_logout();
ส่งคืน JsonResponse ใหม่ ([
'message' => "เซสชันของผู้ใช้ปัจจุบันสิ้นสุดลงแล้ว",
], 200);
}
}
}