欧美特黄不卡,涩涩视频在线,成人国产精品一区二区网站,亚洲一区二区三区欧美

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

防范多人運用統一用戶上網與用戶非正常退出注銷問題

防范多人運用統一用戶上網與用戶非正常退出注銷問題

更新時間:2022-05-13 文章作者:未知 信息來源:網絡 閱讀次數:

1,不要完全靠session來控制,session會有一個失效時間,這個時間不宜設的太短,否則正常工作會受影響。用監聽事件的方法也是不可取的,事實上這個事件也會等到session過期的時候才會觸發。
2,可以采用隱藏楨的方式來檢測用戶的在線,這個時間可以設的比較短。比如5分鐘。就像dev-club.com一樣。在這個楨里得到用戶名,當時的IP,以及訪問時間。記錄在application中。
3,當另有用戶來訪問的時候,就判斷在application的數據,如果已經有該用戶的訪問記錄,就按IP和時間來判斷,是否可以繼續。比如說IP不同,但時間隔了很久了,就允許訪問。
4,你還可以再寫一個后臺進程來對application中的過期數據進行清理。
5,對于使用代理或網關訪問的用戶判斷可以這樣,session對象有一個方法叫getId(),可以得到一個唯一的ID。即使使用同一IP來訪問,這個ID也是不同的,可以加以區分。

嗯。以上都是理論。我沒有做過。但應該是可行的。



原問題
xinlcao 于 2002-12-21 11:06:09 加貼在 Java程序設計 ←返回版面 
請高手幫忙,遇到兩個問題:
1、如何限制同一賬號在同一時間只能有一名用戶使用,即防止多人使用統一用戶上網;
2、如何在用戶直接關閉瀏覽器而不是按退出按鈕時注銷用戶。
我不知道這兩個問題能否在b/s結構中很好的解決,請高手指點。
下面是我的想法和疑惑:
1、可以通過cookie或session取得用戶登陸的記錄,但由于http協議的連接不連續,如果兩個用戶用同一賬號上網,只要不是同時向服務器請求,就無法知道到底是不是合用同一賬號,曾想試著同時記錄用戶上網時的用戶名和ip地址,只要在一定時間內登陸的同一用戶名對應的ip地址不同,即可認為是合用同一賬號,但又引出兩個新的問題:(1)如果兩個用戶在網吧上網或有代理服務器的內部網上網,則獲得的ip地址也可能相同;(2)如果一個用戶撥號上網,突然計算機死機或突然網絡中斷,當他再次上網時,由于撥號每次ip都可能不同,系統將把它當作另一個用戶處理。
2、想過制作一個記錄用戶登陸信息的類class UserLogin,然后啟動一個線程不停的定時查看登陸用戶的信息,根據一定的規則檢查用戶的合法性,但也無法解決上面的問題。
3、對于用戶非正常退出的注銷,曾試著用監聽session的值來判斷:
public class UserLogin implements HttpSessionBindingListener:聲明類時引入監聽器
public void valueUnbound(HttpSessionBindingEvent e):獲得session時的事件
public void valueBound(HttpSessionBindingEvent e):獲得用戶登陸時向session寫入數據時的事件
一個用戶登陸時好判斷,只要從e中得到當時的session,然后從中獲得向session中寫入的變量和值,但是當用戶由于session失效退出時,又無法判斷,因為這時無法知道是哪個用戶退出了,從e中獲得的session已經是實效的了。
先謝謝大家的幫忙。!幫忙幫忙

參見:http://www.dev-club.com/club/bbs/showAnnounce.asp?id=1839973

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 威信县| 哈尔滨市| 会宁县| 当阳市| 临洮县| 巩义市| 辽阳市| 泰兴市| 武清区| 芜湖市| 南阳市| 德钦县| 松溪县| 连山| 镇沅| 公安县| 平山县| 安塞县| 贡觉县| 交口县| 梁平县| 仁化县| 民和| 忻城县| 灵山县| 招远市| 越西县| 安丘市| 涿州市| 故城县| 介休市| 扎兰屯市| 衡山县| 策勒县| 乌兰县| 郓城县| 名山县| 浑源县| 尚义县| 木里| 梁平县|