ASP.NET Cookie概念、CURD操作、原理、实际运用

会话就WEB开发来说,一个会话就是你通过浏览器与服务器之间的一次通话,只不过这种通话是以用浏览器浏览的方式来实现的.

就会话的应用来说,一般会话是用来识别用户的,比如你可以使用会话级变量记录当前用户已经输入的用户名密码,这样就不用他每次输入了,还可以用来记录一些其他的与当前这一次通话有关的信息。一旦你关闭了浏览
器,虽然会话没有结束,但是你重新打开浏览器时,已经不能再次利用上一次的会话了,它会新建一个会话。而服务器会根据预先的设置在超时后自动关闭会话,你也可以手动结束会话。

一、Cookie的基本概念

Cookie是客户端技术,服务器把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。

关于Cookie的知识还需要了解以下几点。

1、Cookie只是一段字符串,并不能执行。

2、大多数浏览器规定Cookie大小不超过4K,每个站点能保存的Cookie不超过20个,所有站点保存的Cookie总和不超过300个。

3、除了Cookie外,几乎没有其他的方法在客户端的机器上写入数据(就连Cookie的写入操作也是浏览器进行的)。当然,连Cookie都可以通过浏览器安全配置来禁止。

微软Internet Explorer 设置方法:工具 > Internet选项 > 隐私 页 调节滑块或者点击“高级”,进行设置.

4、在使用Cookie时,必须意识到其固有的安全弱点。Cookie毕竟是存放于客户端的。因此不要在Cookie中保存保密信息,如用户名、密码、信用卡号等。在Cookie中不要保存不应该由用户掌握的内容,也不要保存可能被其他窃取Cookie的人控制的内容。

5、Cookie文件存放地址(IE浏览器查看 工具 > Internet选项 > 常规选项卡-设置-查看文件):

二、ASP.NET对Cookie的CURD操作

代码如下:

         //写入Cookie三种方式
            //方式1
            var cookie = new HttpCookie("name", "joye888");
            Response.Cookies.Add(cookie);
            //方式2
            Response.Cookies["name1"].Value = "joye8881";
            Response.Cookies["name1"].Expires = DateTime.MaxValue;
            //方式3
            var acookie = new HttpCookie("name2");
            acookie.Value = "joye8882";
            acookie.Expires = DateTime.MaxValue;
            Response.Cookies.Add(acookie);

            //写入多值Cookie
            //方式1:
            //Response.Cookies["userinfo"]["name"].Value = "joye888";
            //Response.Cookies["userinfo"].Expires = DateTime.MaxValue;

            //方式2:
            HttpCookie cookie2 = new HttpCookie("userinfo");
            cookie2.Values["name"] = "joye888";
            cookie2.Expires = DateTime.Now.AddDays(1);
            Response.Cookies.Add(cookie2);

            //读取Cookie的值之前,应该确保该 Cookie 确实存在。否则,您将得到一个异常
            //读取Cookie
            var httpCookie = Request.Cookies["name1"];
            if (httpCookie != null)
            {
                var name = httpCookie.Value;
            }
            //多值Cookie的读取
            var httpCookie1 = Request.Cookies["userInfo"];
            if (httpCookie1 != null)
            {
                var name1 = httpCookie1["name"];
            }

            //修改和删除cookie
            //修改的方法与创建方法相同
            var cookieEdit = new HttpCookie("name", "joye888Edit");
            cookieEdit.Expires = DateTime.Now.AddDays(-1); //将其有效期设置为过去的某个日期。当浏览器检查 Cookie 的有效期时,就会删除这个已过期的 Cookie。
            Response.Cookies.Add(cookieEdit);

            //如果有主站及二级域名站且cookie要共享的话则要加入如下设置
            cookie.Domain = "www.cnblog.com";
            cookie.Path = "/";

浏览器查看写入的Cookie,F12:

三、Cookie运行原理图解

四、Cookie使用的注意事项

Cookie虽然是一个简单实用的对象,但是我们也要注意Cookie的工作原理、大小限制以及安全性等,大致可以归纳为以下几点。

1、存储的物理位置。客户端的Cookies文件夹内。

2、存储的类型限制。字符串。

3、状态使用的范围。当前请求上下文的上下文都能访问到Cookie,Cookie对每个用户来说都是独立的。

4、存储的大小限制。每个Cookie不超过4K数据。每个网站不超过20个Cookie。所有网站的Cookie总和不超过300个。

5、生命周期。每个Cookie都有自己的过期时间,超过了过期时间后失效。

6、安全与性能。存储在客户端,安全性差。对于敏感数据建议加密后存储。

7、优点缺点与注意事项。可以很方便地关联网站和用户,长久保存用户设置。

五、Cookie的实际运用

登录记住用户名和密码示例

页面代码:

<body>
    <form id="form1" method="post" action="rembPage.aspx">
    <div>
        帐号: <input type="text" name="userName" /><br />
        密码 :<input type="password" name="pass" /><br />
        记住我: <input type="checkbox" value="rem" name="sele1" /><br />
        <input type="submit" value=" 登录 " />
    </div>
    </form>
</body>

实现代码:

if (Request.Cookies["userName"] == null && Request.Cookies["passWord"] == null)  //判断是否存在cookie,如果存在表示上次选择了记住我
            {
                if (Request.Form["userName"] != null && Request.Form["pass"] != null)
                {
                    String userName = Request.Form["userName"];
                    String userPassWord = Request.Form["pass"];
                    if (userName == "admin" && userPassWord == "123")
                    {
                        if (Request.Form["sele1"] != null)
                        {
                            HttpCookie cookieUserName = new HttpCookie("userName", userName);  //创建帐号的cookie实例
                            HttpCookie cookiePassWord = new HttpCookie("passWord", userPassWord);
                            cookieUserName.Expires = DateTime.Now.AddDays(2);   //设置帐号cookie的过期时间,当前时间算往后推两天
                            cookiePassWord.Expires = new DateTime(2012, 5, 27);   //设置密码cookie的过期时间,过期时间为2012年5月27日
                            Response.Cookies.Add(cookieUserName);  //将创建的cookieUserName文件输入到浏览器端
                            Response.Cookies.Add(cookiePassWord);
                            Response.Redirect("Index.aspx"); //跳转到你想要的页面
                        }
                        else
                        {
                            Response.Redirect("Index.aspx");//即便不记住密码也要跳转
                        }
                    }

                }
            }
            else
            {
                Response.Redirect("Index.aspx");//如果记住密码,第二次登录将直接进入Index.aspx页面
            }
时间: 2024-08-06 16:05:18

ASP.NET Cookie概念、CURD操作、原理、实际运用的相关文章

cookie、Session工作原理

一.cookie机制和session机制的区别 具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案. 同时我们也看到,由于在服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但实际上还有其他选择.二.会话cookie和持久cookie的区别 如果不设置过期时间,则表示这个cookie生命周期为浏览器会话期间,只要关闭浏览器窗口,cookie就消失了.这种生命期为浏览

ASP.NET Cookie 概述【转】

来源:http://msdn.microsoft.com/zh-cn/library/ms178194(VS.80).aspx ASP.NET Cookie 概述 Cookie 提供了一种在 Web 应用程序中存储用户特定信息的方法.例如,当用户访问您的站点时,您可以使用 Cookie 存储用户首选项或其他信息.当该用户再次访问您的网站时,应用程序便可以检索以前存储的信息. 什么是 Cookie? Cookie 是一小段文本信息,伴随着用户请求和页面在 Web 服务器和浏览器之间传递.Cooki

MongoDB安装、CURD操作、使用场景分析总结(1)

NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL".非关系型的数据存储 MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. MongoDB有数据库.集合.文档三个基本概念分别相当于关系数据库中的数据库.表.行. 一.MongoDB安装 MongoDB官网下载地址:htt

基本数据结构——堆(Heap)的基本概念及其操作

基本数据结构――堆的基本概念及其操作 小广告:福建安溪一中在线评测系统 Online Judge 在我刚听到堆这个名词的时候,我认为它是一堆东西的集合... 但其实吧它是利用完全二叉树的结构来维护一组数据,然后进行相关操作,一般的操作进行一次的时间复杂度在 O(1)~O(logn)之间. 可谓是相当的引领时尚潮流啊(我不信学信息学的你看到log和1的时间复杂度不会激动一下下)!. 什么是完全二叉树呢?别急着去百度啊,要百度我帮你百度: 若设二叉树的深度为h,除第 h 层外,其它各层 (1-h-1

ASP.NET Cookie对象到底是毛啊?(简单小例子)

记得刚接触asp.net的时候,就被几个概念搞的头痛不已,比如Request,Response,Session和Cookie.然后还各种在搜索引擎搜,各种问同事的,但是结果就是自己还是很懵的节奏. 那cookie到底是毛啊?下面是我最不喜欢的一种解释方式(官方定义吧应该叫,我这种智商根本读不懂嘛~) Cookie对象也称缓存对象,该对象用于保存客户端浏览器请求的服务器页面,也可用它存放非敏感性的用户信息. 以前根本读不懂啊,现在其实也懵懵的. 还是用例子能把这个概念搞明白 1.做一个用户登录的界

正确理解cookie和session机制原理

php中cookie和session是我们常用的两个变量了,一个是用户客户端的,一个用在服务器的但他们的区别与工作原理怎么样,下面我们一起来看看cookie和session机制原理吧. cookie和session机制之间的区别和联系 具体来说cookie机制采用的是在客户端保持状态的方案.它是在用户端的会话状态的存贮机制,他需要用户打开客户端的cookie支持.cookie的作用就是为了解决HTTP协议无状态的缺陷所作的努力. 而session机制采用的是一种在客户端与服务器之间保持状态的解决

25-3 requests模块的cookie和代理操作

一.基于requests模块的cookie操作 引言:有些时候,我们在使用爬虫程序去爬取一些用户相关信息的数据(爬取张三"人人网"个人主页数据)时,如果使用之前requests模块常规操作时,往往达不到我们想要的目的,例如: 1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import requests 4 if __name__ == "__main__": 5 6 #张三人人网个人信息页面的url 7 url

ASP.NET Cookie是怎么生成的

原文:ASP.NET Cookie是怎么生成的 ASP.NET Cookie是怎么生成的 可能有人知道Cookie的生成由machineKey有关,machineKey用于决定Cookie生成的算法和密钥,并如果使用多台服务器做负载均衡时,必须指定一致的machineKey用于解密,那么这个过程到底是怎样的呢? 如果需要在.NET Core中使用ASP.NET Cookie,本文将提到的内容也将是一些必经之路. 抽丝剥茧,一步一步分析 首先用户通过AccountController->Login

基本概念及操作

基本概念及操作 实验介绍 本节实验主要有: 1.实验楼环境介绍 2.常用 Shell 命令及快捷键 3.Linux 使用小技巧 一.Linux 桌面环境介绍 相对于现在的 Windows 系统,UNIX/Linux 本身是没有图形界面的,我们通常在 Unix/Linux 发行版上看到的图形界面实际都只是运行在 Linux 系统之上的一套软件,类似 Windows95 之前的Windows 的图形界面实则也只是运行在 DOS 环境的一套软件.而 Linux 上的这套软件以前是XFree86,现在则