如何手動設置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發送回客戶端瀏覽器