.net cookie
HttpCookie
HttpRequest
HttpResponse
这3个 类 。
之间的关系 。
请求 ,相应 都有一个 public HttpCookieCollection Cookies { get; } 可读取的属性。
简单的说就是 :在一个 webform 中 Request. Cookie 可以读取客户端 所有cookie. 返回 HttpCookie 对象, 然后 返回 的 HttpCookie 对象 可以 设置它的Values(值)、Expires(过期时间)、也可以调用 Clear()来清除该 HttpCookie 对象 的值.
Response.cookie.Add 用来 给客户端写入 cookie
cookie 可以直接覆盖,一下是测试代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="testcookie.aspx.cs" Inherits="bootstrapLearn.testcookie" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> </head> <body> <form id="form1" runat="server"> <div> <label id="lab" runat="server"></label> <input type="text" runat="server" id="username" /> <input type="text" runat="server" id="pwd" /> <input type="button" value="登陆" runat="server" id="bt" onserverclick="Unnamed_ServerClick" /> <input type="button" value="登出" runat="server" id="bt_out" onserverclick="bt_out_ServerClick" /> </div> </form> </body> </html>
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace bootstrapLearn { public partial class testcookie : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) bind(); } protected void Unnamed_ServerClick(object sender, EventArgs e) { HttpCookie Cookie = new HttpCookie("testcookie"); Cookie.Values.Add("username", username.Value); Cookie.Values.Add("userpwd", pwd.Value); Cookie.Expires = DateTime.Now.AddMonths(1); Response.Cookies.Add(Cookie); Response.Redirect("testcookie.aspx"); } public void bind() { if (Request.Cookies["testcookie"] != null) { lab.InnerText = ""; HttpCookie cookie = Request.Cookies["testcookie"]; for (int i = 0; i < cookie.Values.Count; i++) { lab.InnerText += cookie.Values[i].ToString(); } } else { lab.InnerText = "没有"; } } protected void bt_out_ServerClick(object sender, EventArgs e) { if (Request.Cookies["testcookie"] != null) { HttpCookie Cookie = Request.Cookies["testcookie"]; Cookie.Values.Clear(); DateTime dts = DateTime.Now;//定义时间对象 TimeSpan ts = new TimeSpan(0, 0, 0, 0);//cookie有效作用时间 Cookie.Expires = dts.Add(ts);//添加作用时间 Response.Cookies.Add(Cookie); } else { lab.InnerText = "没有"; } Response.Redirect("testcookie.aspx"); } } }
Response.Redirect("testcookie.aspx");
这句话是为了 重新发起请求,访问页面,来证明cookie 的状态是否改了。如果不写这句话,可以手动关闭 浏览器 输入 url 来测试。就是说,按钮 登陆登出,的结果,在本次请求中,没法一次性显示。所以我推荐用 ajax 登陆,登出 更好。