91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ASP.NET中Cookie的作用是什么

發布時間:2021-07-20 11:32:30 來源:億速云 閱讀:203 作者:Leah 欄目:編程語言

本篇文章給大家分享的是有關ASP.NET中Cookie的作用是什么,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

ASP.NET Cookie在Web開發中應用較多。做用戶登錄,我一直用form驗證的方式。有時候,為了節省時間,用戶希望用戶名輸入框能夠記住用戶名,省得下次重新輸入。這個時候光用form驗證是不行的,因為form驗證的話,用戶一退出系統就失效了,所以需要借助于Cookie。

本以為做這個會很輕松,誰知花了不少時間也沒有成功。雖然檢驗用戶名和密碼都是正確的,但系統總是拒絕登錄,然后返回到登錄頁面。登錄頁面的用戶名輸入框記是記住用戶名了,但用戶名是亂碼的。

真是郁悶至極!一度以為系統發生了錯亂,重啟機器也還是無濟于事。經反復檢查和測試發現,如果在form驗證之前寫入cookies,就會拒絕登錄。這可能是asp.net出于安全考慮,發現了一個與from標識相同的cookies值,但是它沒有明確地這樣提示。

解決這個問題的做法是,要先驗證登錄再把用戶名寫入cookies,這樣就可以成功。

System.Web.Security.FormsAuthentication.SetAuthCookie(UserName.Text,false);//登錄...  //將用戶名寫入cookies  Response.Cookies["RememberMe"].Value = HttpUtility.UrlEncode(UserName.Text, System.Text.Encoding.GetEncoding("gb2312"));  Response.Cookies["RememberMe"].Expires = DateTime.Now.AddMonths(1);

至于輸入框的用戶名顯示為亂碼是因為存儲的是中文用戶名,把中文字符寫入cookies時,如果不做任何處理是會生產亂碼的。解決方法是如上面紅色代碼所示,在寫入的時候使用url編碼,而且編碼格式需要是中文格式的。在取得cookies值的時候做相應的解碼即可:

UserName.Text = HttpUtility.UrlDecode(Request.Cookies["RememberMe"].Value, System.Text.Encoding.GetEncoding("gb2312"));

另一個問題是刪除cookies,以前一直以為用Response.Cookies.Remove("RememberMe")可以刪除,但就是沒有效果。原來調用Cookies集合的 Remove 方法可從服務器端的集合中移除 Cookie,使 Cookie 不會被發送至客戶端。但是,如果客戶端已存在   Cookie,則該方法無法從客戶端將其移除。 解決方法是,將 Cookie 的到期日期設置為過去的日期,讓用戶的瀏覽器來刪除 Cookie:

if (Response.Cookies["RememberMe"] != null) Response.Cookies["RememberMe"].Expires = DateTime.Now.AddDays(-1);//刪除

***一個問題是創建瀏覽器進程的cookies(即關閉瀏覽器就會自動清空),創建方法相當簡單,不要設置Expires屬性就是默認的瀏覽器進程cookies。

結尾附上關鍵部分的代碼

System.Web.Security.FormsAuthentication.SetAuthCookie(UserName.Text,false);//登錄,一定要先驗證         if (RememberMe.Checked)//再寫入cookie        {            if (Request.Cookies["RememberMe"] == null)            {                Response.Cookies["RememberMe"].Value = HttpUtility.UrlEncode(UserName.Text, System.Text.Encoding.GetEncoding("gb2312"));                Response.Cookies["RememberMe"].Expires = DateTime.Now.AddMonths(1);            }        }        else       {            if (Response.Cookies["RememberMe"] != null) Response.Cookies["RememberMe"].Expires = DateTime.Now.AddDays(-1);//刪除        }

讀取cookies值的時候:

if (!IsPostBack)  {      if (Request.Cookies["RememberMe"] != null)      {          UserName.Text = HttpUtility.UrlDecode(Request.Cookies["RememberMe"].Value, System.Text.Encoding.GetEncoding("gb2312"));          RememberMe.Checked = true;      }  }

總結一下:

1.寫一個與form驗證相同用戶名的值到cookies中,應該先驗證后寫cookies,否則會產生沖突,導致驗證不能通過。

2.刪除cookie的正確方法是設置已有cookies的日期為早于當前時間的日期,使用Cookies.Remove是沒有效果的。

3.創建瀏覽器進程的cookies,不要設置Expires屬性就行了,這樣關閉瀏覽器就會自動被清空

4.cookies值是中文的時候***用gb2312編碼一下,這樣可以避免產生亂碼。

以上就是ASP.NET中Cookie的作用是什么,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

稷山县| 通渭县| 苍山县| 德阳市| 祁东县| 小金县| 沈丘县| 慈溪市| 和平区| 新巴尔虎左旗| 松潘县| 民权县| 灵丘县| 三都| 苍山县| 炉霍县| 贵阳市| 盐山县| 金寨县| 梓潼县| 赤水市| 金沙县| 云安县| 综艺| 延边| 富蕴县| 嘉义市| 富民县| 甘泉县| 宜昌市| 缙云县| 苍南县| 恭城| 中方县| 芜湖市| 宽城| 区。| 定远县| 长白| 青州市| 华蓥市|