asp.net(c#)有關(guān) Session 操作的幾個(gè)誤區(qū)
更新時(shí)間:2007年06月28日 00:00:00 作者:
1. this.Session["username"] = null
HttpSessionState 內(nèi)部使用 NameObjectCollection 類(lèi)型的集合對(duì)象來(lái)存儲(chǔ)用戶(hù)數(shù)據(jù)。因此使用 this.Session["username"] = null 僅僅是將該元素的值設(shè)為 null 而已,并沒(méi)有真的將其從 Session 中移除。(為什么?暈~~~ 建議看看 C# 基礎(chǔ)方面的書(shū)。)
正確的方法是:this.Session.Remove("username");
刪除全部數(shù)據(jù):this.Session.RemoveAll(); 或 this.Session.Clear();
2. this.Session.Abandon()
該方法會(huì)導(dǎo)致當(dāng)前 Session 被取消,系統(tǒng)會(huì)觸發(fā) Global.asax 中的 Session_End 事件(僅限于 Mode = InProc 時(shí))。
盡管再次發(fā)出請(qǐng)求時(shí) SessionID (可能)沒(méi)有發(fā)生變化,但是你會(huì)發(fā)現(xiàn) Global.asax Session_Start 事件被觸發(fā)。你還可以使用 this.Session.IsNewSession 屬性來(lái)判斷當(dāng)前 Session 是否重新創(chuàng)建的。
由于某些組件和控件可能要使用 Session 信息(如使用 this.Session.SyncRoot 進(jìn)行同步),因此不要輕易使用該方法清理 Session。
3. 用戶(hù)身份驗(yàn)證
不要使用 this.Session["username"] = "ZhangSan" 、if (this.Session["username"] != null) 這樣的方式進(jìn)行用戶(hù)身份驗(yàn)證,這種方式既不安全也不合理。有關(guān)身份驗(yàn)證請(qǐng)參考 MSDN 文檔或雨痕寫(xiě)的相關(guān)文章。
HttpSessionState 內(nèi)部使用 NameObjectCollection 類(lèi)型的集合對(duì)象來(lái)存儲(chǔ)用戶(hù)數(shù)據(jù)。因此使用 this.Session["username"] = null 僅僅是將該元素的值設(shè)為 null 而已,并沒(méi)有真的將其從 Session 中移除。(為什么?暈~~~ 建議看看 C# 基礎(chǔ)方面的書(shū)。)
正確的方法是:this.Session.Remove("username");
刪除全部數(shù)據(jù):this.Session.RemoveAll(); 或 this.Session.Clear();
2. this.Session.Abandon()
該方法會(huì)導(dǎo)致當(dāng)前 Session 被取消,系統(tǒng)會(huì)觸發(fā) Global.asax 中的 Session_End 事件(僅限于 Mode = InProc 時(shí))。
盡管再次發(fā)出請(qǐng)求時(shí) SessionID (可能)沒(méi)有發(fā)生變化,但是你會(huì)發(fā)現(xiàn) Global.asax Session_Start 事件被觸發(fā)。你還可以使用 this.Session.IsNewSession 屬性來(lái)判斷當(dāng)前 Session 是否重新創(chuàng)建的。
由于某些組件和控件可能要使用 Session 信息(如使用 this.Session.SyncRoot 進(jìn)行同步),因此不要輕易使用該方法清理 Session。
3. 用戶(hù)身份驗(yàn)證
不要使用 this.Session["username"] = "ZhangSan" 、if (this.Session["username"] != null) 這樣的方式進(jìn)行用戶(hù)身份驗(yàn)證,這種方式既不安全也不合理。有關(guān)身份驗(yàn)證請(qǐng)參考 MSDN 文檔或雨痕寫(xiě)的相關(guān)文章。
您可能感興趣的文章:
- asp.net BasePage類(lèi)+Session通用用戶(hù)登錄權(quán)限控制
- ASP.NET中在一般處理程序中使用session的簡(jiǎn)單介紹
- ASP.NET Session使用詳解
- ASP.NET登錄注冊(cè)頁(yè)面實(shí)現(xiàn)
- 一款經(jīng)典的ajax登錄頁(yè)面 后臺(tái)asp.net
- ASP.NET?MVC5網(wǎng)站開(kāi)發(fā)用戶(hù)登錄、注銷(xiāo)(五)
- 基于.Net的單點(diǎn)登錄(SSO)實(shí)現(xiàn)解決方案
- .net MVC使用Session驗(yàn)證用戶(hù)登錄(4)
相關(guān)文章
asp.net無(wú)法加載oci.dll等錯(cuò)誤的解決方法
.net在windows2003下訪(fǎng)問(wèn)oracle9i提示“無(wú)法加載oci.dll”或"無(wú)法在dll oci.dll中找到名為ocienvcreate的入口點(diǎn) "的修復(fù)方法2013-10-10
Asp.net 頁(yè)面調(diào)用javascript變量的值
開(kāi)發(fā)過(guò)程中碰到了這種情況,我想將javascript中定義的變量賦值給頁(yè)面中的TextBox控件.2009-12-12
ASP.NET網(wǎng)站模板的實(shí)現(xiàn)(第2節(jié))
這篇文章主要為大家詳細(xì)介紹了如何實(shí)現(xiàn)網(wǎng)站模板,了解母版頁(yè)在整合頁(yè)面公共元素、統(tǒng)一頁(yè)面風(fēng)格中的作用,感興趣的朋友可以參考下2015-08-08
EFCore 通過(guò)實(shí)體Model生成創(chuàng)建SQL Server數(shù)據(jù)庫(kù)表腳本
這篇文章主要介紹了EFCore 通過(guò)實(shí)體Model生成創(chuàng)建SQL Server數(shù)據(jù)庫(kù)表腳本的示例,幫助大家更好的理解和學(xué)習(xí)使用.net框架,感興趣的朋友可以了解下2021-03-03
ASP.NET訪(fǎng)問(wèn)共享文件夾的詳細(xì)步驟
這篇文章主要介紹了ASP.NET訪(fǎng)問(wèn)共享文件夾的詳細(xì)步驟,有需要的朋友可以了解一下。2016-10-10
asp.net使用ashx生成圖形驗(yàn)證碼的方法示例
這篇文章主要介紹了asp.net使用ashx生成圖形驗(yàn)證碼的方法,結(jié)合實(shí)例形式分析了asp.net生成圖形驗(yàn)證碼的步驟、實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-07-07

