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

  • 相关阅读:
    参加过的面试题目总结
    小论文实验讨论——不同的分类算法
    【设计模式】行为型07备忘录模式(Memento Pattern)
    【设计模式】行为型06命令模式(Command Pattern)
    【设计模式】行为型05责任链模式(Chain of responsibility Pattern)
    【设计模式】行为型04迭代器模式(Iterator Pattern)
    【设计模式】行为型03观察者模式(Observer Pattern)
    【设计模式】行为型02模板方法模式(Template Method Patten)
    【JVM】02垃圾回收机制
    【死磕线程】线程同步机制_java多线程之线程锁
  • 原文地址:https://www.cnblogs.com/bingguang/p/4201649.html
Copyright © 2020-2023  润新知