ASP.NET如何防止用戶多次登錄(2)_.Net教程
推薦:ASP.NET 2.0中文驗(yàn)證碼的實(shí)現(xiàn)在判斷的時(shí)候只要把取得的文本框的值與Session[valicode] 進(jìn)行判斷是否一致就行了。 //建立位圖對象 Bitmap NewbitMap = new Bitmap(90, 22, PixelFormat.Format32bppArgb); //根據(jù)上面創(chuàng)建的位置對象創(chuàng)建繪圖面 Graphics g = Graphics.FromImage(NewbitMap)
然后在logout.aspx的Page_Load中寫和Session_End相同的方法,同時(shí)在logout.aspx中加入事件:onload="javascript:window.close()"
但是這樣還是有問題,javascript在不同的瀏覽器中可能有不同的行為,還有就是當(dāng)通過文件->關(guān)閉時(shí)沒有判斷到。
2、使用xmlhttp方法(這種方法測試下來沒有問題)
在每個(gè)頁面中加入如下的javascript(這些javascript也可以寫在共通里,每個(gè)頁面引入就可以了)
以下是引用片段:
var x=0;
function myRefresh()
{
var httpRequest = new ActiveXObject("microsoft.xmlhttp");
httpRequest.open("GET", "test.aspx", false);
httpRequest.send(null);
x ;
if(x< 60) //60次,也就是Session真正的過期時(shí)間是30分鐘
{
setTimeout("myRefresh()",30*1000); //30秒
}
}
myRefresh();
在web.config中設(shè)置
以下是引用片段:
< sessionState mode="InProc" timeout="1">< /sessionState>
test.aspx頁面就是一個(gè)空頁面,只不過需要在Page_Load中加入:
以下是引用片段:
Response.Expires = -1;
保證不使用緩存,每次都能調(diào)用到這個(gè)頁面。
原理就是:設(shè)置Session的過期時(shí)間是一分鐘,然后在每個(gè)頁面上定時(shí)每30秒連接一次測試頁面,保持Session有效,總共連60次,也就是30分鐘。如果30分鐘后用戶還沒有操作,Session就會(huì)過期。當(dāng)然,如果用戶直接關(guān)閉瀏覽器,那么一分鐘后Session也會(huì)過期。這樣就可以滿足要求了。
分享:解讀ASP.NET網(wǎng)絡(luò)編程中經(jīng)常用到的27個(gè)函數(shù)集1、DateTime 數(shù)字型 以下是引用片段: System.DateTime currentTime=new System.DateTime(); 1.1 取當(dāng)前年月日時(shí)分秒 currentTime=System.DateTime.Now; 1.2 取當(dāng)前年 int 年=currentTime.Year; 1.3 取當(dāng)前月 int 月=currentTime.Month; 1.4 取當(dāng)前日 int 日
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過程實(shí)現(xiàn)分頁示例代碼
- 相關(guān)鏈接:
- 教程說明:
.Net教程-ASP.NET如何防止用戶多次登錄(2)。