2011-03-08 53 views
0

FormsAuthenticationTicket的版本號中的大小/數字是否有任何限制。FormsAuthenticationTicket.Version返回無效版本號

我試圖使用表單身份驗證創建一個ASP.NET cookie,使用大版本號(例如:1234567需要此號碼用於識別目的)。但是當我解密cookie時,我得到135作爲版本號。

最初,舊的表單身份驗證Cookie已刪除,以添加新信息。

Response.Cookies.Remove(FormsAuthentication.FormsCookieName); 

以下是我用來創建FormsAuthentication cookie的代碼。

FormsAuthenticationTicket newAuthTicket = new FormsAuthenticationTicket(1234567, un, DateTime.Now, DateTime.Now.AddHours(5F), false, user_data); 
HttpCookie newauthCookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(newAuthTicket)); 

Response.Cookies.Add(newauthCookie); 

檢索到cookie後,我得到的版本號是135.這個數字因版本號的不同而不同。

string cookieName = FormsAuthentication.FormsCookieName; 
HttpCookie authCookie = Context.Request.Cookies[cookieName]; 

if (authCookie == null) 
{ 
    return; 
} 

FormsAuthenticationTicket authTkt = null; 
authTkt = FormsAuthentication.Decrypt(authCookie.Value); 

if (authTkt == null) 
{ 
    return; 
} 
int versionID = authTkt.Version; 

有人可以讓我知道如果這是一個壞主意,用這麼大的版本號,還是我失去了這個東西。

感謝您的幫助, 維傑

+0

你爲什麼要在身份驗證中存儲身份信息?難道你不能對'UserData'做同樣的事嗎? – 2011-03-09 02:13:18

+0

您還發布在:http://forums.asp.net/p/1661433/4334634.aspx/1?Re+FormsAuthenticationTicket+Version+returns+invalid+version+number – 2011-03-09 02:14:50

+0

@Daniel:我有其他用戶數據存儲在cookie的UserData部分。但是我仍然不明白爲什麼當VersionID屬性應該能夠獲取Int值時值被更改。 是的,我沒有發佈它在asp.net論壇希望不同的建議。 :) – Adi 2011-03-09 19:45:17

回答

0

確保該票名稱不爲空過去了。

+0

票名有一定的價值。 – Adi 2011-03-17 16:03:12