Common problem with user online
Common problem with user online
ในการทำระบบผู้ใช้งานให้ปลอดภัย โดยไม่ให้มีการใช้ account ในการ login ซ้ำกันในเวลาเดียวกันนั้น โดยส่วนมากจะทำการสร้าง field เพื่อเก็บว่า user นั้นๆได้ทำการ login แล้วและทำการ set ค่ากลับเมื่อมีการ logout แต่ปัญหาที่พบของการทำงานแบบนี้คือ เหตุการณ์ที่ account นั้นๆไม่ทำการ logout ไม่ว่าจะด้วยเหตุผลใด ทำให้ไม่สามารถ login ได้อีกต่อไป
ตัวอย่างโครงสร้างตารางแบบนี้คือ
| userid | integer |
| username | varchar |
| password | varchar |
| islogon | boolean |
จากปัญหาดังกล่าวเราสามารถแก้ไขได้โดย การออกแบบ policy ของ application ใหม่จากการตรวจสอบแค่ว่า logon หรือยัง เปลี่ยนเป็นเมื่อไม่มี activity เกินเวลาที่กำหนดให้ถือว่าเป็นการ logoff ซึ่ง policy แบบนี้จะเห็นได้ใน application ที่มีการติดต่อสื่อสารในฝั่ง server application ทั่วไปที่เรียกว่าค่า timeout
ทีนี้เรามาดูการสร้างให้ application ของเรามี timeout อย่างง่ายๆกัน นี่คือตัวอย่างตารางข้อมูล
| userid | integer |
| username | varchar |
| password | varchar |
| logontime | datetime |
เรามาออกแบบ policy ของระบบคือให้มี timeout เป็น 10 นาที การทำงานก็คือ เมื่อมีการพยายาม login ก็ทำการตรวจสอบเพิ่มว่า logontime มีค่าน้อยกว่าเวลาปัจจุบันเกิน 10 นาทีหรือไม่ถ้าใช่ก็สามารถให้เข้าสู่ระบบได้
งานที่เพิ่มขึ้นมาคือเราต้องทำการบันทึกเวลาปัจจุบันเข้าไปเสมอเมื่อ user นั้นมี activity เท่านั้นครับ














