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页面
}

Cookie概念的更多相关文章

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

    会话就WEB开发来说,一个会话就是你通过浏览器与服务器之间的一次通话,只不过这种通话是以用浏览器浏览的方式来实现的. 就会话的应用来说,一般会话是用来识别用户的,比如你可以使用会话级变量记录当前用户已 ...

  2. Session与Cookie概念

    摘:一.Session机制session是一种服务器端的状态管理技术,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息.当程序需要为某个客户端的请求创建一个session的时候,服务 ...

  3. [04] Cookie概念和基本使用

    1.Cookie是什么 Cookie,中文名称为"小型文本文件"或"小甜饼",指某些网站为了辨别用户身份而储存在用户本地终端上的数据(通常经过加密). 很多网站 ...

  4. Session与Cookie的概念原理

    前言: 本文没有任何代码,内容全部都是概念与运行原理,在使用一个技术前一定要弄清他的本质,下面会讲Session.Cookie.ServletContext的概念与他们的联系区别 Session概念 ...

  5. sessionStorage & localStorage & cookie

    sessionStorage & localStorage & cookie 概念 html5中的Web Storage包括了两种存储方式:sessionStorage和localSt ...

  6. 浏览器本地储存方式有哪些?cookie、localStorage、sessionStorage

    现阶段,浏览器提供的储存方式常用的有三种,cookie.localStorage.sessionStorage 1.cookie 概念:cookie 是浏览器中用于保存少量信息的一个对象 基本特征: ...

  7. session和cookie作用原理,区别

    Cookie概念 在浏览某些 网站 时,这些网站会把 一些数据存在 客户端 , 用于使用网站 等跟踪用户,实现用户自定义 功能. 是否设置过期时间: 如果不设置 过期时间,则表示这个 Cookie生命 ...

  8. Cookie与 Session使用详解

    Cookie概念 在浏览某些 网站 时,这些网站会把 一些数据存在 客户端 , 用于使用网站 等跟踪用户,实现用户自定义 功能. 是否设置过期时间: 如果不设置 过期时间,则表示这个 Cookie生命 ...

  9. Java中的会话Cookie&&Session

    会话技术 会话: 一次会话中包含多次请求和响应. 一次会话:浏览器第一次给服务器资源发送请,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求之间共享数据 方式: 客户端会话技术:coo ...

随机推荐

  1. 我写过的软件之FileExpert

    公司要做一个项目,跟MP4有点关系.到网上找了规范文档看了看,理解还是不够深入.干脆花点时间做一个Parser.取名FileExpert.眼下仅仅支持解析ISO_IEC_14496-12的文件格式.取 ...

  2. 黑马程序猿————OC在Foundation框架结构和字符串

    ------<a href="http://www.itheima.com" target="blank">Java火车.Android火车.iOS ...

  3. Java 使用AES/CBC/PKCS7Padding 加解密字符串

    介于java 不支持PKCS7Padding,只支持PKCS5Padding 但是PKCS7Padding 和 PKCS5Padding 没有什么区别要实现在java端用PKCS7Padding填充, ...

  4. hdu 4404 Worms(多边形与圆的交)

    求出爆炸点的坐标,就成了多边形与圆相交面积的模板题了... #include<algorithm> #include<iostream> #include<cstring ...

  5. _00021 尼娜抹微笑伊拉克_谁的的最离奇的异常第二阶段 Jedis pool.returnResource(jedis)

    笔者博文:妳那伊抹微笑 博客地址:http://blog.csdn.net/u012185296 博文标题:_00021 妳那伊抹微笑_谁的异常最诡异第二期之 Jedis pool.returnRes ...

  6. 泥鳅般的const(一个小Demo彻底搞清楚)

    #include<stdio.h> int main(){     int a = 3;     int b = 5;          /* C标准库函数中最常见格式, 目的是保护參数, ...

  7. Get与Post的差别

    Http定义了与server交互的不同方法,最主要的方法有4种,各自是GET,POST.PUT,DELETE. URL全称是资源描写叙述符.我们能够这样觉得:一个URL地址,它用于描写叙述一个网络上的 ...

  8. Android于fragment_main.xml文件问题组件收购

    package com.dhy.phonedial; import android.app.Activity; import android.app.Fragment; import android. ...

  9. Java equals 和 hashcode 方法

    问题 面试时经常会问起字符串比较相关的问题, 总结一下,大体是如下几个: 1.字符串比较时用的什么方法,内部实现如何? 2.hashcode的作用,以及重写equal方法,为什么要重写hashcode ...

  10. .NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper

    .NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper 參考演示样例代码,例如以下所看到的: /// <summary> /// MySql ...