C# Cookie不允许多个键/值对
我有一个简单的方案,可以让用户使用cookie登录。完成后,我希望cookie包含两个名称-值对。我以前使用过这个基本的实现,我不明白为什么这次它对我不起作用C# Cookie不允许多个键/值对,c#,asp.net-mvc,cookies,C#,Asp.net Mvc,Cookies,我有一个简单的方案,可以让用户使用cookie登录。完成后,我希望cookie包含两个名称-值对。我以前使用过这个基本的实现,我不明白为什么这次它对我不起作用 protected void SetAuthCookie(string EventCode, string id) { SHA1 sha = SHA1.Create(); byte[] data = sha.ComputeHash(Encoding.UTF8.GetBytes(id));
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);
}
受保护的void SetAuthCookie(字符串事件代码,字符串id)
{
SHA1 sha=SHA1.Create();
byte[]data=sha.ComputeHash(Encoding.UTF8.GetBytes(id));
HttpCookie AuthCookie=新的HttpCookie(“mycokie”);
StringBuilder sBuilder=新StringBuilder();
for(int i=0;i
到目前为止,我发现:如果我注释掉“AuthCookie[“eventcode”]=eventcode;”,那么在我的浏览器中,我看到mycokie的值为“id=foo”
同样,如果我注释掉“AuthCookie[“id”]=sBuilder.ToString();”我看到mycokie的值为“eventcode=foo”
我想要的是myookie的值为“eventcode=foo&id=bar”。但是,如果我在浏览器中没有注释掉这两行,我会看到MyCookie没有\empty值。有什么好处
在以前的实现中唯一的区别是我没有处理'id'参数-它已经是一个guid。我认为这是一个加密散列字符串这一事实是一种误导,因为硬编码'foo'作为'id'或'eventcode'的cookie值会导致相同的结果。我可能错了
HttpCookie AuthCookie = new HttpCookie("MyCookie");
AuthCookie.Values["eventcode"] = EventCode;
AuthCookie.Values["id"] = sBuilder.ToString();
AuthCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(aCookie);
他说,这应该行得通
我发现Google Chrome在localhost/dev网站上有一些奇怪的问题。可能是这样吗?我在本地主机上使用chrome,我想你是有钱的。例如,如果我将键“id”更改为“_id”,那么一切都会按照我期望的方式工作。