ASP.NET Cookie概念、CURD操作、原理、实际运用
会话就WEB开发来说,一个会话就是你通过浏览器与服务器之间的一次通话,只不过这种通话是以用浏览器浏览的方式来实现的.
就会话的应用来说,一般会话是用来识别用户的,比如你可以使用会话级变量记录当前用户已经输入的用户名密码,这样就不用他每次输入了,还可以用来记录一些其他的与当前这一次通话有关的信息。一旦你关闭了浏览
器,虽然会话没有结束,但是你重新打开浏览器时,已经不能再次利用上一次的会话了,它会新建一个会话。而服务器会根据预先的设置在超时后自动关闭会话,你也可以手动结束会话。
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选项 > 常规选项卡-设置-查看文件):

代码如下:
//写入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();
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(-); //将其有效期设置为过去的某个日期。当浏览器检查 Cookie 的有效期时,就会删除这个已过期的 Cookie。
Response.Cookies.Add(cookieEdit); //如果有主站及二级域名站且cookie要共享的话则要加入如下设置
cookie.Domain = ".cnblog.com";
cookie.Path = "/";
public static void AddCookie(string key,string value,int expires)
{
var acookie = new HttpCookie(key);
acookie.Value = value;
acookie.Domain = ".cnblog.com";
acookie.Path = "/";
acookie.Expires = DateTime.Now.AddMinutes(expires);
HttpContext.Current.Response.Cookies.Add(acookie);
} public static string GetCookie(string key)
{
var httpCookie = HttpContext.Current.Request.Cookies[key]; if (httpCookie != null)
{
return httpCookie.Value;
}
return "";
}
浏览器查看写入的Cookie,F12:


Cookie虽然是一个简单实用的对象,但是我们也要注意Cookie的工作原理、大小限制以及安全性等,大致可以归纳为以下几点。
1、存储的物理位置。客户端的Cookies文件夹内。
2、存储的类型限制。字符串。
3、状态使用的范围。当前请求上下文的上下文都能访问到Cookie,Cookie对每个用户来说都是独立的。
4、存储的大小限制。每个Cookie不超过4K数据。每个网站不超过20个Cookie。所有网站的Cookie总和不超过300个。
5、生命周期。每个Cookie都有自己的过期时间,超过了过期时间后失效。
6、安全与性能。存储在客户端,安全性差。对于敏感数据建议加密后存储。
7、优点缺点与注意事项。可以很方便地关联网站和用户,长久保存用户设置。
登录记住用户名和密码示例
页面代码:
<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 == "")
{
if (Request.Form["sele1"] != null)
{
HttpCookie cookieUserName = new HttpCookie("userName", userName); //创建帐号的cookie实例
HttpCookie cookiePassWord = new HttpCookie("passWord", userPassWord);
cookieUserName.Expires = DateTime.Now.AddDays(); //设置帐号cookie的过期时间,当前时间算往后推两天
cookiePassWord.Expires = new DateTime(, , ); //设置密码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页面
}
ASP.NET Cookie概念、CURD操作、原理、实际运用的更多相关文章
- 用户登录之asp.net cookie的写入、读取与操作
页面前面: <div id="login" runat="server"> <span class="log_title" ...
- Cookie概念
ASP.NET Cookie概念.CURD操作.原理.实际运用 会话就WEB开发来说,一个会话就是你通过浏览器与服务器之间的一次通话,只不过这种通话是以用浏览器浏览的方式来实现的. 就会话的应用来 ...
- jquery.cookie中的操作
http://w3school.com.cn/js/js_cookies.asp jquery.cookie中的操作: jquery.cookie.js是一个基于jquery的插件,点击下载! 创建一 ...
- session和cookie的作用和原理
session和cookie作用原理,区别 Cookie概念 在浏览某些 网站 时,这些网站会把 一些数据存在 客户端 , 用于使用网站 等跟踪用户,实现用户自定义 功能. 是否设置过期时间: 如果不 ...
- MongoDB的安装及CURD操作
MongoDB的下载地址:http://www.mongodb.org/downloads MongoDB有32bit和64bit两个版本,32bit只能存放2GB数据.我们选择64bit版进行下载. ...
- ASP.NET Cookie 概述【转】
来源:http://msdn.microsoft.com/zh-cn/library/ms178194(VS.80).aspx ASP.NET Cookie 概述 Cookie 提供了一种在 Web ...
- 基本数据结构——堆(Heap)的基本概念及其操作
基本数据结构――堆的基本概念及其操作 小广告:福建安溪一中在线评测系统 Online Judge 在我刚听到堆这个名词的时候,我认为它是一堆东西的集合... 但其实吧它是利用完全二叉树的结构来维护一组 ...
- Cookie和Session的原理和异同
Cookie和Session的原理和异同 原理: cookie: 1.创建Cookie 当用户第一次浏览某个使用Cookie的网站时,该网站的服务器就进行如下工作: ①该用户生成一个唯一的识别码(Co ...
- 编写一篇博文介绍COOKIE和Session的原理及异同
一.什么是cookie 1.概念 Cookie是存储在客户机的文本文件,它们保存了大量轨迹信息.在servlet技术基础上,JSP显然能够提供对HTTP cookie的支持. Cookie 是在 HT ...
随机推荐
- HTML5 FileReader
利用HTML5中的FileReader类,动态切换af中Panel的背景,动态设置img元素的图片 1 if(FileReader){ 2 $('.panel').on("tap" ...
- 【项目管理】Project使用
http://www.cnblogs.com/wangfupeng1988/p/3647166.html
- Linux下的ssh远程访问
准备工作:首先需要在windows系统中安装虚拟机,并在虚拟机中安装好linux操作系统,这里安装的是vmware player虚拟机和ubuntu版本的操作系统.关于该部分的安装在作者的其他经验中有 ...
- [Arch] 04. Software Architectural Patterns
让我们一起 回忆: 原则 基本认识 S 应该仅有一个引起它变化的原因 O 在不被修改的前提下被扩展 L 尽量从抽象类继承 I 应该依赖于抽象 D 倾向瘦接口 让我们开始 新课: [Design Pat ...
- Linux常用命令总结--基础命令
系统信息 1.arch 显示机器的处理器架构(1) 2.uname -m 显示机器的处理器架构(2) 3.lsb_release -a 查看操作系统版本 4.top 查看进程 5.free -m 查看 ...
- Windows Server 2008 + SQL Server 2005集群
一. 基础环境 1. 服务器规划 2. 网络拓扑 二. 相关说明 1.为了节约服务器资源,AD服务器可以和iSCSI设备服务器同为一台服务器.由于iSCSI软件需要,目前微软只开发了基于Windows ...
- Java 流(Stream)、文件(File)和IO -- Java ByteArrayInputStream类
字节数组输入流在内存中创建一个字节数组缓冲区,从输入流读取的数据保存在该字节数组缓冲区中.创建字节数组输入流对象有以下几种方式. 接收字节数组作为参数创建: ByteArrayInputStream ...
- LHC大神问的矩阵转置问题
数学中线性代数中提到的矩阵转置,其实在我们的业务场景中也有需要的地方,比如LHC大神问到的这个问题 那么如何进行行列转换呢? 代码如下: <?php $array=array( '部门1'=&g ...
- 【RF库XML测试】parse xml
Name:Parse XmlSource:XML <test library>Arguments:[ source | keep_clark_notation=False ]Parses ...
- 使用 requests 维持会话
什么是 Cookie 和 Session: 简单来说,我们访问每一个互联网页面,都是通过 HTTP 协议进行的,而 HTTP 协议是一个无状态协议,所谓的无状态协议即无法维持会话之间的状态.比如,仅使 ...