使用 Google 搜尋本站文章:
首頁 | CodeCharge 討論板 | 部落格 | ASP.NET 電子書 | 所有文章 | 相簿 | News | 網站導讀 | 聯絡 Allen | 訂閱 RSS
Microsoft MVP 
since 2004 
 

Blog 分類 :


如何處理重覆登入系統

By Allen Kuo, 建立日期:2009/05/14 10:59 ,最後修改日期:2009/05/14 11:06
如果你想做一個線上教學的網站, 希望會員付費後才能看, 您可能就不希望同一時間有多人用同一組帳號登入...
    加入書籤: 收進你的MyShare個人書籤

在使用者連結到你網站時,會有一組 Session ID 產生, 您可以在該使用者成功登入後, 將目前已登入網站的 Session ID, 帳號, 及時間都存放在application

當有人登入成功時, 你就將上述 Application 值裡, 帳號相同的資料刪了, 再加上目前這位使用者

例如台北有人有 Allen 帳號登入, 台中也有人在 2 分鐘後用相同帳號登入

在線上教學的網頁裡

  • 程式先檢查目前使用者是否已登入過 ( 此時台北,台中的 Allen 都會通過驗證 )
  • 接著再在 application 裡找找有沒有相符的 Session ID ,由於台中 Allen 登入時, 台北 Allen 的 Session ID 已被移除, 所以一定找不到台北 Allen 的
  • 若找不到 Session ID, 就不允許台北 Allen 檢視該網頁,並視需要同時將台北 Allen 的 Session 清掉, 強制他登出
  • 接著台北 Allen 若嘗試重新登入, 系統會允許他登入, 但同時也會將台中 Allen 的記錄從 application 中刪除, 稍後台中 Allen 想看網頁時,就會發現無法使用

這些機制, 主要是防止有人交錢加入會員後, 卻將帳號與多人分享, 多人同時上網享受網站的服務, 這機制做到的是永遠讓最後一個登入的人順利操作, 但先前登入的人被踢出系統

如果 Allen 是善意的使用者, 他先用 Browser 連上來,登入了, 卻不小心關了 Browser , 或當機導致需要重新開機後再次登入, 網站仍能讓他順利操作。

有人會問, 能不能讓第一個登入的 Allen 正常操作, 但事後有人用 Allen 登入時,就拒絕他呢? 基本上是做得到, 但若遇到上述善意使用者,只是不小心關了 Browser, 系統就會阻止他再次登入, 使用者必需等待一段時間, 等系統將過久沒操作的使用者刪除後, 才能再次登入, 在使用者會稍微不方便 ( 客服電話會接不完吧, 我想 )

 

上述機制,我自己沒在用, 但看起來可行, 很多人問了相同的問題, 所以我寫在這裡供需要的人參考。

 


Copyright © AllenKuo.com , 2000 - 2010