• Cookie和Session 简单介绍


    cookie
        1、cookie是存在客户端(浏览器)的进程内存中和客户端所在的机器硬盘上
        2、cookie只能能够存储少量文本,大概4K大小
        3、cookie是不能在不同浏览器之间共享
     
     1 添加Cookie
     2 //1.0 在服务器端实例化cookie对象
     3 
     4 HttpCookie cookie = new HttpCookie("name", name);
     5 
     6 //2.0  设置cookie在浏览器端有效时间为2分钟,注意:此时浏览器就会将cookie存入到其所在的硬盘(等待时间到期以后才消失)
     7 
     8 cookie.Expires = DateTime.Now.AddSeconds(120);
     9 
    10 //3.0 Path ="/" 表示当前浏览器请求此网站的任何页面都会将有效cookie传入给服务器
    11 
    12 cookie.Path = "/01cookie/"; //指定当前cookie只有在浏览器访问01cookie文件下下的所有页面才传入服务器
    13 
    14 //4.0  设置Domain 表示当前cookie只有在当前设置好的域名下才有效
    15 
    16     //注意:如果没有指定Domain 的情况下,asp.net会智能的读取当前url中的主机
    17 
    18     //实现单点登录的简单方式可以设置cookie的Domain 为顶级域名
    19 
    20     //顶级域名 .baidu.com
    21 
    22     //二级域名:www.baidu.com,zhidao.baidu.com  mp3.baidu.com
    23 
    24     //三级域名:zhidao.s1.baidu.com ,但是一般只是用到二级域名,三级域名对于网站的seo优化回不明显
    25 
    26     //单点登录:实现一次登录以后再当前域名下面的其他站点可以实现免登录
    27 
    28 cookie.Domain = ".c12.com"; //将cookie的Domain设置成顶级域名以后再其所有的二级域名下的网站都可以共享此cookie
    29 
    30 //5.0 通过Response.Cookies 将cookie对象发送给浏览器保存
    31 
    32 Response.Cookies.Add(cookie); //底层就是向相应报文头中 添加指令 set-cookie:name = admin;Expires UTC时间

     获取Cookie的值:

    if (Request.Cookies["name"] == null)
    
    {
    
        Response.Write("<script>alert('登录状态已经失效,请重新登录');window.location='login.aspx'</script>");
    
    }

    删除Cookie:

    //清除cookie思路,一定是将cookie的过期时间设置为当前时间以前的某个时间点
    
    //清除 path=/下的并且doamin曲子url主机的cookie
    
    HttpCookie cookie = new HttpCookie("name", "");
    
    cookie.Expires = DateTime.Now.AddYears(-1);
    
    //表示清除path=/01cookie/的cookie
    
    cookie.Path = "/01cookie/";
    
    Response.Cookies.Add(cookie); //set-cookie :Expires:2013-4-11



    Session:

         1、存在服务器端,存在网站进程的内存中

         2、在初次设置session的时候,会在session池中实例化一个session对象,以asp.net_sessionid 的值作为key,同时会将key以cookie的形式

     保存到客户端的内存中

         3、session的作用域只存在当前浏览器的会话中,当浏览器关闭以后就会将sessionid丢失,但是服务器的session对象要20分钟以后才会回收

         4、在web.config中的 <system.web> 节点下添加 <sessionState timeout="5" cookieless="true"></sessionState> 手动修改session的相关设置

    注意点:

    aspx编译完成以后会自动实现接口IRequiresSessionState,所以能够直接使用session

    但是一般处理程序,需要程序员自己实现接口IRequiresSessionState ,才能够使用session对象

    如果浏览器禁用了cookie,则可以使用

    设置:<sessionState cookieless="true"></sessionState> 来开启url传入sessionid到服务器,但是不推荐使用

    添加Session:

    //将当前name的值存入session中
    
    context.Session["name"] = name;

    获取Cookie:

    (string)Session["name"]

    删除Cookie:

    //负责清除session
    
    context.Session["name"] = null;
    
    context.Session.Abandon();    取消当前会话

    在一般处理程序中要使用session  要实现System.Web.SessionState.IRequiresSessionState接口

  • 相关阅读:
    几种简单排序算法
    【转】虚拟机下CentOS7开启SSH连接
    【转】SignalR来做实时Web聊天
    加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用
    C#加密解密(DES,AES,Base64,md5,SHA256,RSA,RC4)
    【C#公共帮助类】给大家分享一些加密算法 (DES、HashCode、RSA、AES等)
    对称加密与非对称加密
    PowerDesigner概念模型与物理模型相互转换及导出数据字典
    SQO2008配置管理工具服务显示远程过程调用失败
    MongoDB学习笔记-数据格式及数据类型
  • 原文地址:https://www.cnblogs.com/BeInNight/p/4979837.html
Copyright © 2020-2023  润新知