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

posted @ 2015-01-04 18:33  pengbg  阅读(180)  评论(0编辑  收藏  举报