【问题标题】:How can I set cookie value in one page and read it from another page in a asp.net website如何在一个页面中设置 cookie 值并从 asp.net 网站的另一个页面中读取它
【发布时间】:2016-12-22 22:52:30
【问题描述】:

这是我在 Login.aspx 中的代码

protected void LoginButton_Click(object sender, EventArgs e)
{
    HttpCookie loginCookie1 = new HttpCookie("loginCookie");
    Response.Cookies["loginCookie1"].Value = LoginUser.UserName;
    Response.Cookies.Add(loginCookie1);
}

这是在 shop.aspx 中

protected void btnAddCart_Click(object sender, EventArgs e)
{ 
     HttpCookie myCookie = new HttpCookie(dvProduct.DataKey.Value.ToString());
     myCookie["Category"] = dvProduct.DataKey["Category"].ToString();
     myCookie["Product"] = dvProduct.DataKey["Product"].ToString();
     myCookie["Quantity"] = txtQuantity.Text;
     myCookie["Price"] = dvProduct.DataKey["Price"].ToString();
     myCookie.Expires = DateTime.Now.AddDays(1d);
     Response.Cookies.Add(myCookie);
     Response.Redirect("ViewCart.aspx", true);
}

我想从cookie中读取用户名的值(login.aspx中设置的值

【问题讨论】:

  • 小更正--> 我想从shop.aspx页面读取cookie中username的值(value set in login.aspx)
  • 请注意,您不应将用户名存储在 cookie 中;这是一个安全漏洞。从客户端更改 cookie 的值非常容易,然后他们需要做的就是猜测管理员的姓名以获得对您系统的完全访问权限。相反,将用户与 guid 相关联并将 guid 存储在 cookie 中。回程时,在服务器上查找与 guid 一起存储的信息。

标签: c# asp.net cookies


【解决方案1】:

你基本上需要请求 cookie 并不重要你是什么页面 这是关于cookies的解释

http://msdn.microsoft.com/en-us/library/ms178194.aspx

HttpCookie aCookie = Request.Cookies["loginCookie"];
string username = Server.HtmlEncode(aCookie.Value);

【讨论】:

  • @techblog :记得给你认为好的答案投票。这给了我们所有人一种温暖的模糊感:P .. 如果这个答案是您问题的解决方案,那么请接受它.. 我喜欢这个 +1。
【解决方案2】:

您设置 loginCookie 的代码看起来很奇怪:

HttpCookie loginCookie1 = new HttpCookie("loginCookie"); 
Response.Cookies["loginCookie1"].Value = LoginUser.UserName; // <--- strange!!!!
Response.Cookies.Add(loginCookie1); 

很可能您的 cookie 没有发送到浏览器 - 使用 HTTP 调试器检查,例如 Fiddler

【讨论】:

  • >我正在从 asp.net 的登录控件中检索用户名。 LoginUser 是登录控件的 ID。在这里,我检查了它是否正在检索用户名,它正在检索它。我只是在阅读它时遇到了麻烦。
  • 请发布“login.aspx”实际发送到浏览器的cookie标头,并从浏览器返回“shop.aspx”页面。
  • >嗨,我找到了解决方案。下面的代码解决了这个问题。 HttpCookie aCookie = Request.Cookies["loginCookie1"];字符串用户名 = Server.HtmlEncode(aCookie.Value); >谢谢。
  • 很高兴听到。我猜这也是一种方式...还可以在登录页面上修复奇怪的代码以使用您期望的名称设置 cookie 可能更合适。
【解决方案3】:

应该这样做:

var userName = Request.Cookies["loginCookie"].Value;

【讨论】:

  • >上述代码出现此错误
    {"对象引用未设置为对象的实例。"}
  • 因为无法获取空对象的值。
猜你喜欢
  • 1970-01-01
  • 2011-01-26
  • 1970-01-01
  • 2020-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-17
相关资源
最近更新 更多