2011-03-08 67 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