javascript - วิธีออกจากระบบของผู้ใช้เมื่อมีผู้ใช้ใหม่เข้าสู่ระบบในเบราว์เซอร์เดียวกัน?
ฉันกำลังเจอปัญหานี้ที่ฉันมีแดชบอร์ดสองอันสำหรับผู้ใช้สองคน หนึ่งอันสำหรับผู้ดูแลระบบและอีกอันสำหรับผู้ค้า ปัญหาคือเมื่อผู้ดูแลระบบเข้าสู่ระบบและในแท็บใหม่ผู้ค้าก็เข้าสู่ระบบเช่นกัน หากฉันรีเฟรชหน้าผู้ดูแลระบบ ฉันจะได้แถบนำทางที่ควรเป็นของผู้ค้าและส่วนที่เหลือของหน้าคือของผู้ดูแลระบบ... ฉันเก็บโทเค็นไว้ใน localStorage
มีใครสามารถบอกฉันได้ไหมว่าฉันจะออกจากระบบผู้ใช้ที่เข้าสู่ระบบก่อนหน้านี้ได้อย่างไร หากมีผู้ใช้ใหม่เข้าสู่ระบบในเบราว์เซอร์เดียวกัน?
คำตอบ #1
ถ้าคุณละเลย IE ฉันชอบใช้ Broadcast Channel API แทนเหตุการณ์ localStorage
เริ่มช่องกระจายเสียงของคุณและฟังเหตุการณ์
const bc = new BroadcastChannel("your_channel_name")
bc.onmessage = (e) => {
// Business logic here
// data sent through the channel is available at e.data
}
เมื่อคุณต้องการกระตุ้นเหตุการณ์
bc.postMessage("your logout message");
คำตอบ #2
ถ้าคุณจำเป็นต้องออกจากระบบในแท็บอื่น มันจะช่วยได้ถ้าส่งสัญญาณระหว่างหลายแท็บ คุณสามารถใช้เหตุการณ์ของ local storage ได้
ตั้งค่ากิจกรรมออกจากระบบบนแท็บก่อนหน้า
localStorage.setItem('logout-event', 'logout' + Math.random());
ทุกแท็บอื่นจะฟังมันด้วยโค้ดด้านล่าง
window.addEventListener('storage', function(event){
if (event.key == 'logout-event') {
// your code here
}
});
พูดง่ายๆ คือทุกครั้งที่พ่อค้าล็อกอินโดยใช้แท็บใหม่ ให้ทำตามขั้นตอนข้างต้นเพื่อลงชื่อออกจากผู้ใช้อื่นใดๆ
