日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

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

系統(tǒng) 2199 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中刪除;在 用戶訪問頁面時(shí),察看Hashtable中是否有對應(yīng)的用戶 ID如果沒有則判斷用戶不在線(用戶不在線的原因可 能是按了注銷按鈕、網(wǎng)頁超時(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(
" 登錄過程中發(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è)頁面需要刷新的地方,調(diào)用如下代碼:?
try ?
{?
????
if ( ! common.MyUtility.AmIOnline(Session[ " UserID " ].ToString(),(Hashtable)Application[ " OnLine " ]))?
????
{?
????????
// 用戶沒有在線?,轉(zhuǎn)到登錄界面?
????????Response.Write( " <script>parent.document.location.href='Login.aspx';</script> " );? /**/ /// /有框架時(shí)用?
???????? // Response.Redirect("login.aspx");? //// 無框架時(shí)用?
???????? return ;?
????}
?
}
?
catch ?
{?
????
// 會話過期?,轉(zhuǎn)到登錄界面?
????Response.Write( " <script>parent.document.location.href='Login.aspx';</script> " );? /**/ /// /有框架時(shí)所用?
???? // Response.Redirect("login.aspx");? //// 無框架時(shí)用?
???? return ;?
}
?

?

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


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

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

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


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 大足县| 万州区| 合作市| 喜德县| 定结县| 苗栗县| 南昌市| 灵武市| 尖扎县| 宁国市| 宁夏| 治县。| 九江市| 甘肃省| 石首市| 历史| 雷波县| 乌兰县| 凉城县| 韶关市| 凉山| 凌源市| 合阳县| 定南县| 汝南县| 资兴市| 汕头市| 荆州市| 茌平县| 治县。| 安阳市| 宝清县| 乌拉特中旗| 洛南县| 施秉县| 乐业县| 浦北县| 新乡县| 酒泉市| 正宁县| 荣昌县|