使用场景:
在FormsAuthenticationTicket的userData字段中存放用户身份对象(以BinaryFormatter进行序列化)
出现的问题:
通过写COOKIE将加密后的FormsAuthenticationTicket保存到用户浏览器,重定向后的请求中无法从COOKIE取得FormsAuthenticationTicket的userData字段,该字段为空。
CSDN有一篇类似的贴子如下,发现其分析还是没有找到根本原因。
http://bbs.csdn.net/topics/330186399
分析发现userData字段如存放的是普通的非序列化后的字条串,userData字段在重定向后能拿到;所以问题应该在创建FormsAuthenticationTicket对象的时候,userData的赋值不成功。
IFormatter fm = new BinaryFormatter();
Stream sm = new MemoryStream();
fm.Serialize(sm, ssoIdentity);
sm.Seek(0, SeekOrigin.Begin);
StreamReader reader = new StreamReader(sm);
string strSSOIdentity = reader.ReadToEnd();
reader.Close();
strSSOIdentity的值如下所示: