可以通過SessionID和使用者名來保證同一個使用者不能同時登入的問題,下面程式模仿了QQ的登入,當登入後判斷目前帳号是否已經登入,如果登入。則踢掉以前登入的使用者。
1.通過Application全局變量來存儲SessionID和使用者名,每次登入時都儲存,并且将該Application存入 Hashtable中,當使用者登入成功後,首先判斷該使用者是否已經存儲在Application中,如果存在(說明已經登入),則将該使用者對應的值設定為 XX(值為無用).
代碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | |
2,寫一個BasePage加一個Init方法如下,系統的所有頁面均繼承自該BasePage
代碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | |
3.在程式退出後從Application中清除目前SessionID
代碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
4.如果程式非正常退出,SessionID沒有及時的清除,那麼也不會影響帳号的正常登入,而SessionID也會随着Session的過期而自動清除,伺服器也不會有壓力。
5,如果感覺存儲在Application中感覺不好,也可以将SessionID存入資料庫中,判斷方法和上面一樣。
6,測試時注意在不同機器上面測試,同一台機子上面的SessionID是一樣的,每次設定為XX後又有新值進去,看不到效果,如果要防止同一個帳号在同一台機子上面同僚登入兩次以上,可以通過mac位址來判斷。