自己實現FormsAuthentication.SetAuthCookie方法,怎樣在ASP.NET服務端代碼中刪除客戶端Cookie


如何手動設置AuthCookie

 

ASP.NET中實現可以自己實現FormsAuthentication.SetAuthCookie方法,控制更為靈活

 1 /// <summary>
 2         /// 存用戶信息到cookie
 3         /// </summary>
 4         /// <param name="userName"></param>
 5         /// <param name="isPersistent">cookie是否是持久的</param>
 6         protected static void LoginSystem(string userName, bool isPersistent)
 7         {
 8             DateTime issueDateTime=DateTime.Now;
 9             DateTime expiredDateTime=issueDateTime.AddMinutes(120);
10 
11             FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(1,
12                                                                                  userName,
13                                                                                  issueDateTime,
14                                                                                  expiredDateTime,
15                                                                                  isPersistent,
16                                                                                  userName);
17             string encryptedTicket = FormsAuthentication.Encrypt(authTicket);
18             System.Web.HttpCookie authCookie = new System.Web.HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
19 
20             if (isPersistent)
21             {
22                 authCookie.Expires = expiredDateTime;
23             }
24 
25             System.Web.HttpContext.Current.Response.Cookies.Add(authCookie); 
26         }

 

我們知道默認情況下Forms認證的Cookie名稱是".ASPXAUTH",其實可以在ASP.NET項目的Web.config文件中自定義這個Cookie的名稱,方法就是設置forms節點的name屬性,如下所示

<authentication mode="Forms">
  <forms name="SSOServiceAuth">
    <!--設置站點Forms認證Cookie的名稱為SSOServiceAuth-->
  </forms>
</authentication>

 

 

 

如何刪除客戶端瀏覽器上的Cookie

 

這里順便說一下ASP.NET刪除Cookie的方法,很多朋友在ASP.NET中向客戶端瀏覽器添加了Cookie后,卻不知道怎么在ASP.NET服務器端刪除Cookie,大家只要記住一點不管是存儲在客戶端硬盤上的持久化Cookie還是存儲於客戶端內存中的非持久化Cookie,只要Cookie的過期時間(Cookie.Expires)小於或等於當前客戶端操作系統的時間,Cookie馬上就會被客戶端瀏覽器刪除掉,所以我們只需要在ASP.NET服務端設置你要刪除的Cookie的過期時間(Cookie.Expires)小於客戶端操作系統的當前時間就行了,為了保險起見我們可以設置要刪除Cookie的過期時間(Cookie.Expires)為DateTime.MinValue.AddSeconds(1),這樣肯定是小於客戶端操作系統時間的,Cookie會被客戶端瀏覽器立刻刪除掉。

HttpCookie abandonCookie = Request.Cookies["MyCookie"];//獲取要刪除的Cookie
abandonCookie.Expires = DateTime.MinValue.AddSeconds(1);//設置要刪除的Cookie的過期時間(Expires)為DateTime.MinValue加1秒,這樣該Cookie被放入Response發送到客戶端瀏覽器后,肯定小於客戶端的操作系統時間,所以會被客戶端瀏覽器立刻刪除掉

Response.Cookies.Add(abandonCookie);//將設置好過期時間(Expires)的Cookie放入Response發送回客戶端瀏覽器

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM