.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 登陆,登出 更好。

你可能感兴趣的:(cookie)