asp.net(c#)有關 Session 操作的幾個誤區

來源:互聯網
上載者:User

1. this.Session["username"] = null
HttpSessionState 內部使用 NameObjectCollection 類型的集合對象來儲存使用者資料。因此使用 this.Session["username"] = null 僅僅是將該元素的值設為 null 而已,並沒有真的將其從 Session 中移除。(為什嗎?暈~~~ 建議看看 C# 基礎方面的書。)

正確的方法是:this.Session.Remove("username");
刪除全部資料:this.Session.RemoveAll(); 或 this.Session.Clear();

2. this.Session.Abandon()
該方法會導致當前 Session 被取消,系統會觸發 Global.asax 中的 Session_End 事件(僅限於 Mode = InProc 時)。
儘管再次發出請求時 SessionID (可能)沒有發生變化,但是你會發現 Global.asax Session_Start 事件被觸發。你還可以使用 this.Session.IsNewSession 屬性來判斷當前 Session 是否重新建立的。

由於某些組件和控制項可能要使用 Session 資訊(如使用 this.Session.SyncRoot 進行同步),因此不要輕易使用該方法清理 Session。

3. 使用者身分識別驗證
不要使用 this.Session["username"] = "ZhangSan" 、if (this.Session["username"] != null) 這樣的方式進行使用者身分識別驗證,這種方式既不安全也不合理。有關身分識別驗證請參考 MSDN 文檔或雨痕寫的相關文章。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.