亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

防止用戶重復(fù)登錄!

系統(tǒng) 1947 0

本例完成的功能就是防止用戶重復(fù)登錄!若用戶已經(jīng) 登錄,則當(dāng)其再次登錄時(shí),彈出提示框后返回!

實(shí)現(xiàn)思路:用戶登錄成功后,將用戶登錄信息存放到 Hashtable類型的Application["Online"]里面,其鍵 值為SessionID,其Value值為用戶ID;當(dāng)用戶注銷時(shí) ,調(diào)用Session.Abandon;在Global.asax里面的 SessionEnd事件中,將用戶ID從Hashtable中刪除;在 用戶訪問(wèn)頁(yè)面時(shí),察看Hashtable中是否有對(duì)應(yīng)的用戶 ID如果沒(méi)有則判斷用戶不在線(用戶不在線的原因可 能是按了注銷按鈕、網(wǎng)頁(yè)超時(shí)等)

?

// 1、公用類中判斷用戶是否在線的函數(shù)(供用戶調(diào)用)?
/**/ /// ? <summary> ?
/// ?判斷用戶strUserID是否包含在Hashtable?h中?
/// ? </summary> ?
/// ? <param?name="strUserID"></param> ?
/// ? <param?name="h"></param> ?
/// ? <returns></returns> ?

public ? static ? bool ?AmIOnline( string ?strUserID,Hashtable?h)?
{?
????
if (strUserID? == ? null )?
????
return ? false ;?

????
// 繼續(xù)判斷是否該用戶已經(jīng)登陸?
???? if (h? == ? null )?
????
return ? false ;?

????
// 判斷哈希表中是否有該用戶?
????IDictionaryEnumerator?e1? = ?h.GetEnumerator();?
????
bool ?flag? = ? false ;?
????
while (e1.MoveNext())?
????
{?
????????
if (e1.Value.ToString().CompareTo(strUserID)? == ? 0 )?
????????
{?
????????????flag?
= ? true ;?
????????????
break ;?
????????}
?
????}
?
????
return ?flag;?
}
?

// 2、用戶登錄事件處理:?
private ? void ?btnlogin_Click( object ?sender,?System.Web.UI.ImageClickEventArgs?e)?
{? /**/ /// /User為自定義的類,其中包含Login方法?
????User?CurUser? = ? new ?User();?
????CurUser.UserID?
= ? this .username.Text.Trim();?

????
if (MyUtility.AmIOnline(CurUser.UserID,?(Hashtable)Application[ " Online " ]))?
????
{?
????????JScript.Alert(
" 您所使用的登錄ID已經(jīng)在線了!您不能重復(fù)登錄! " );?
????????
return ;?
????}
?

????CurUser.LoginPsw?
= ?FormsAuthentication.HashPasswordForStoringInConfigFile( this .password.Text.Trim(), " SHA1 " );?
????
int ?ii? = ?CurUser.Login();?
????StringBuilder?sbPmt?
= ? new ?StringBuilder();?

????
switch (ii)?
????
{?
????????
case ? 0 :? // 如果登錄成功,則將UserID加入Application["Online"]中?
????????????Hashtable?h? = ?(Hashtable)Application[ " Online " ];?
????????????
if (h? == ? null )?
????????????h?
= ? new ?Hashtable();?
????????????h[Session.SessionID]?
= ?CurUser.UserID;?
????????????Application[
" Online " ]? = ?h;?

????????????Session[
" UserID " ]? = ?CurUser.UserID;?
????????????Session[
" UserNM " ]? = ?CurUser.UserNM;?
????????????Session[
" RoleMap " ]? = ?CurUser.RoleMap;?
????????????Session[
" LoginPsw " ]? = ?CurUser.LoginPsw;?
????????????Session[
" LoginTime " ]? = ?DateTime.Now;?
????????????Response.Redirect(
" ChooseRole.aspx " );?
????????
break ;?
????????
case ? - 1 :?
????????????JScript.Alert(
" 用戶名錯(cuò)誤! " );?
????????
break ;?
????????
case ? - 2 :?
????????????JScript.Alert(
" 密碼錯(cuò)誤! " );?
????????
break ;?
????????
default :?
????????????sbPmt.Append(
" 登錄過(guò)程中發(fā)生未知錯(cuò)誤! " );?
????????????JScript.Alert(sbPmt.ToString());?
????????
break ;?
????}
?
????
return ;?
}
?

// 3、在Global.asax中的Session_End事件:?
protected ? void ?Session_End(Object?sender,?EventArgs?e)?
{?
????Hashtable?h
= (Hashtable)Application[ " Online " ];?

????
if (h[Session.SessionID] != null )?
????h.Remove(Session.SessionID);?

????Application[
" Online " ] = h;?
}
?

// 4、在每一個(gè)頁(yè)面需要刷新的地方,調(diào)用如下代碼:?
try ?
{?
????
if ( ! common.MyUtility.AmIOnline(Session[ " UserID " ].ToString(),(Hashtable)Application[ " OnLine " ]))?
????
{?
????????
// 用戶沒(méi)有在線?,轉(zhuǎn)到登錄界面?
????????Response.Write( " <script>parent.document.location.href='Login.aspx';</script> " );? /**/ /// /有框架時(shí)用?
???????? // Response.Redirect("login.aspx");? //// 無(wú)框架時(shí)用?
???????? return ;?
????}
?
}
?
catch ?
{?
????
// 會(huì)話過(guò)期?,轉(zhuǎn)到登錄界面?
????Response.Write( " <script>parent.document.location.href='Login.aspx';</script> " );? /**/ /// /有框架時(shí)所用?
???? // Response.Redirect("login.aspx");? //// 無(wú)框架時(shí)用?
???? return ;?
}
?

?

深入思考:
由本例的解決方法可以加以延伸,比如,在存儲(chǔ)
UserID的時(shí)候,將UserID+客戶端IP地址一起存進(jìn)去, 則在將相應(yīng)信息取出來(lái)分析的時(shí)候,可以做到:當(dāng)用 戶在不同的計(jì)算機(jī)上先后登錄的時(shí)候,則允許最近一 次的登錄,而將之前的登錄刪除!等等等等


--這個(gè)里面是具體的詳細(xì)信息

http://www.cnblogs.com/panshuiqing/articles/951779.html

防止用戶重復(fù)登錄!


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 国产小视频在线观看 | 日韩永久免费视频 | 欧美大屁股精品毛片视频 | 114毛片免费观看网站 | 国产大片中文字幕 | 色婷婷综合在线 | 国产精品免费久久久久影院小说 | 国产精品综合一区二区 | 久久九九亚洲精品 | 麻豆一区二区三区在线观看 | 欧美精品成人 | 国产成人亚洲欧美三区综合 | 我要看欧美一级毛片 | 亚洲欧洲国产经精品香蕉网 | 日韩中文字幕高清在线专区 | 91久久亚洲精品一区二区 | 国产成人精品免费视频网页大全 | 欧美成人aa大片拍拍拍 | 91视频日韩| 久久国产精品一区二区 | 亚洲综合无码一区二区 | 欧美日韩网站 | 久久精品成人国产午夜 | 天码毛片一区二区三区入口 | 精品无码久久久久久久动漫 | 欧美日韩综合精品一区二区三区 | 七次郎在线成人精品 | 久草在线中文视频 | 99热国产在线 | 成年午夜视频免费观看视频 | 亚洲国产aaa毛片无费看 | 在线观看国产福利 | 99视频网址 | 日韩中文字幕一区二区不卡 | 免费国产成人高清在线观看麻豆 | 不卡的中文字幕 | 免费国产成人高清在线观看视频 | 手机看片在线精品观看 | 午夜视频免费国产在线 | 亚洲高清中文字幕综合网 | 91亚洲国产系列精品第56页 |