2010-08-04 64 views
22

我正在使用FormsAuthenticationTicket並放置數據並將數據傳遞到所有頁面。 ,如果我們不更改任何數據,它將工作。以編程方式更改FormsAuthenticationTicket中的用戶數據

因此,現在如果我想更改數據並將其傳遞給cookie並進行加密,那麼如何以編程方式更改數據。

請給我解決方案,以編程方式更改HttpCookie中的數據。

回答

44

這是我如何更改已簽發的窗體身份驗證票證的例子:

HttpCookie cookie = FormsAuthentication.GetAuthCookie(Username, true); 
var ticket = FormsAuthentication.Decrypt(cookie.Value); 

// Store UserData inside the Forms Ticket with all the attributes 
// in sync with the web.config 
var newticket = new FormsAuthenticationTicket(ticket.Version, 
               ticket.Name, 
               ticket.IssueDate, 
               ticket.Expiration, 
               true, // always persistent 
               "User Data", 
               ticket.CookiePath); 

// Encrypt the ticket and store it in the cookie 
cookie.Value = FormsAuthentication.Encrypt(newticket); 
cookie.Expires = newticket.Expiration.AddHours(24); 
this.Context.Response.Cookies.Set(cookie); 
+0

我想改變用戶數據才怎麼可能? – 2010-08-09 02:47:22

+1

相同的代碼,只需將「用戶數據」值修改爲您的值即可。這個過程(據我所知)是一樣的。獲取cookie,解密票證,更新它,加密它,在響應中設置cookie。 – mdarnall 2010-08-09 20:55:58

+0

爲什麼你將cookie過期設置爲'newticket.Expiration.AddHours(24)'而不是'newticket.Expiration'? – 2016-05-30 09:35:24

相關問題