成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺談一些對ASP.NET Cookie的認識

開發 后端
本文將談談一些對ASP.NET Cookie的認識,希望本文能對大家了解ASP.NET有所幫助。

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

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

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

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

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

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

  1. 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:

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

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

結尾附上關鍵部分的代碼

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

讀取cookies值的時候:
 

  1. if (!IsPostBack)  
  2. {  
  3.     if (Request.Cookies["RememberMe"] != null)  
  4.     {  
  5.         UserName.Text = HttpUtility.UrlDecode(Request.Cookies["RememberMe"].Value, System.Text.Encoding.GetEncoding("gb2312"));  
  6.         RememberMe.Checked = true;  
  7.     }  
總結一下:

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

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

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

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

原文標題:對ASP.NET Cookie的一些新的認識

鏈接:http://www.cnblogs.com/qingyun163/archive/2009/12/11/1621734.html

責任編輯:彭凡 來源: 博客園
相關推薦

2012-07-03 13:55:00

ASP.NET

2009-09-04 13:11:25

ASP.NET生成XM

2009-08-04 16:06:19

ASP.NET代碼分離

2013-05-31 02:18:47

ASP.NET.Net

2009-08-21 18:05:23

ASP.NET Ses

2009-07-24 10:52:42

ASP.NET ISA

2009-07-20 15:30:11

ASP.NET應用

2009-07-22 16:11:43

ASP.NET AJA

2009-07-31 18:00:35

ASP.NET工作流學

2009-08-14 17:49:02

ASP.NET MVC

2009-07-21 11:11:44

刪除CookieASP.NET

2009-07-28 17:49:30

ASP.NET定期回收

2009-07-22 13:24:24

ASP.NET MVC

2009-08-10 10:19:47

ASP.NET組件設計

2009-07-23 15:44:39

ASP.NET MVC

2009-07-20 17:12:17

ASP.NET訪問數據

2009-08-05 15:29:33

ASP.NET For

2009-07-28 16:03:23

ASP.NET狀態服務

2009-07-27 13:01:28

TreeViewASP.NET

2009-07-28 18:00:11

ASP.NET程序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99视频免费在线观看 | 欧美日韩一区二区三区四区 | 色综合久久久久 | 精品国产一区二区三区性色av | 九九激情视频 | 午夜精品久久久久久不卡欧美一级 | 日日噜噜夜夜爽爽狠狠 | 亚洲精品一区二区三区四区高清 | 欧洲亚洲精品久久久久 | 国产精品中文字幕在线 | 一级高清视频 | 日韩精品视频网 | 龙珠z在线观看 | 久久久视 | 精品久久久久久亚洲综合网 | 国产成人综合一区二区三区 | 伊人网91 | 欧美日韩中文字幕在线播放 | 久久视频免费看 | 久久香焦| av电影手机版| 亚洲97 | 毛片高清| 欧美日韩三区 | 欧美在线观看一区 | 欧美成人a | 精品国产一区二区三区日日嗨 | 国产视频一区二区 | 亚洲精品二区 | 久热精品在线观看视频 | 久久激情视频 | 日韩精品在线观看一区二区三区 | 欧美在线免费 | 一区二区国产在线 | 婷婷久久网 | 91资源在线 | 久久久久久国产精品mv | 99re6在线视频精品免费 | 综合久久久 | 日本不卡一区 | 国产精品久久国产精品 |