我有一个简单的方案来保持用户使用cookie登录。我希望cookie在完成后包含两个名称值对。我以前使用过这个基本的实现,我不明白为什么它这次不适合我。
protected void SetAuthCookie(string EventCode, string id)
{
SHA1 sha = SHA1.Create();
byte[] data = sha.ComputeHash(Encoding.UTF8.GetBytes(id));
HttpCookie AuthCookie = new HttpCookie("MyCookie");
StringBuilder sBuilder = new StringBuilder();
for (int i = 0; i < data.Length; i++)
{
sBuilder.Append(data[i].ToString("x2"));
}
AuthCookie["eventcode"] = EventCode;
AuthCookie["id"] = sBuilder.ToString();
Response.Cookies.Add(AuthCookie);
}
以下是我迄今为止发现的内容:如果我发表评论&#34; AuthCookie [&#34; eventcode&#34;] = EventCode;&#34;然后在我的浏览器中,我看到MyCookie留下了价值&#34; id = foo&#34;。
同样,如果我发表评论&#34; AuthCookie [&#34; id&#34;] = sBuilder.ToString();&#34;我看到MyCookie留下了价值&#34; eventcode = foo&#34;。
我想要的是MyCookie的值为&#34; eventcode = foo&amp; id = bar&#34;。但是,如果我没有留下任何一行注释掉,在我的浏览器中,我看到MyCookie没有空值。是什么给了什么?
之前实施的唯一区别是我还没有处理过&#39; id&#39;参数 - 它已经是一个指导。我认为它是一个加密的哈希字符串的事实是一个红色的鲱鱼,因为硬编码&#39; foo&#39;作为&#39; id&#39;的cookie值的值或者&#39; eventcode&#39;导致相同的结果。我可能错了
答案 0 :(得分:0)
HttpCookie AuthCookie = new HttpCookie("MyCookie");
AuthCookie.Values["eventcode"] = EventCode;
AuthCookie.Values["id"] = sBuilder.ToString();
AuthCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);
这应该有用,MSDN
我发现Google Chrome与localhost / dev网站存在一些奇怪的问题。可能是这种情况吗?