1.创建一个新的cookie,并赋值。 
HttpCookie cookie; 
      cookie=new HttpCookie("user"); 
      cookie.Domain = AppConfig.DomainName; 
      cookie.Values.Add("Username",username); 
      cookie.Values.Add("ldapStr",FindUserlist.Table.Rows[0]["ldapStr"].ToString());
      Response.AppendCookie(cookie);
2.获取cookie的值
 HttpCookie cookie=Request.Cookies["user"]; 
    if(cookie!=null) 
    { 
         string username = cookie["Username"]; 
         string ldapStr = cookie["ldapStr"]; 
    } 
3、写Cookie 值
HttpCookie myCookie = new HttpCookie("CookieName");  
myCookie.Values.Add("CookieItem1","CookieItem1Value");  
myCookie.Values.Add("CookieItem2","CookieItem2Value");  
myCookie.Expires = DateTime.Now.AddDays(30);  
Response.AppendCookie(myCookie);

4、清除Cookie值HttpCookie myCookie = HttpContext.Current.Response.Cookies["CookieObjectName"]; 
if(myCookie != null)  
myCookie.Expires = DateTime.Now;

在做项目过程中,用户登陆之后,需要将用户的信息存到Cookie中,但因为Cookie中只能存储字符串,所以想到了先把用户实体序列化成Json串,存储在Cookie中,用到的时候再拿出来反序列化。

C#中Json与对象之间的互相转换

下载并引用Newtonsoft.Json.dll

定义一个简单的用户实体:

  1. public class UserInfo
  2. {
  3. /// <summary>
  4. /// 用户名称
  5. /// </summary>
  6. public string UserName { get; set; }
  7. /// <summary>
  8. /// 用户密码
  9. /// </summary>
  10. public string UserPwd { get; set; }
  11. /// <summary>
  12. /// 用户级别
  13. /// </summary>
  14. public string UserLevel { get; set; }
  15. }

将对象序列化成Json串:

  1. /// <summary>
  2. /// 将对象序列化成Json
  3. /// </summary>
  4. /// <param name="obj">需要序列化的对象</param>
  5. /// <returns>序列化后的字符串</returns>
  6. public static string ObjectToJson(object obj)
  7. {
  8. return Newtonsoft.Json.JsonConvert.SerializeObject(obj);
  9. }

将Json串反序列化成对象:

  1. /// <summary>
  2. /// 从Json字符串反序列化为对象
  3. /// </summary>
  4. /// <param name="jsonString">Json字符串</param>
  5. /// <param name="obj">要生成的对象类型</param>
  6. /// <returns>反序列化后的对象</returns>
  7. public static object JsonToObject(string jsonString)
  8. {
  9. return Newtonsoft.Json.JsonConvert.DeserializeObject<UserInfo>(jsonString);
  10. }

Cookie的使用

将实体序列化为Json并存入Cookie中:

//获取UserInfo对象

  1. UserInfo enUser=new UserInfo()
  2. {
  3. UserName="Danny",
  4. UserPwd="123456",
  5. UserLevel="admin"
  6. }

//创建Cookie对象
HttpCookie userInfo = new HttpCookie("userInfo");

//将序列化之后的Json串以UTF-8编码,再存入Cookie
userInfo.Value = HttpUtility.UrlEncode(ObjectToJson(enUser), Encoding.GetEncoding("UTF-8"));

//将cookie写入到客户端
System.Web.HttpContext.Current.Response.SetCookie(userInfo);

//设置cookie保存时间
userInfo.Expires = DateTime.Now.AddMinutes(20);
从Cookie中读取出Json串并反序列化成实体

//取出Cookie对象
HttpCookie userInfoCookie = System.Web.HttpContext.Current.Request.Cookies.Get("userInfo");

//从Cookie对象中取出Json串
string strUserInfo = HttpUtility.UrlDecode(userInfoCookie.Value, Encoding.GetEncoding("UTF-8"));

//Json串反序列化为实体
UserInfoViewModel userInfo = JsonToObject(strUserInfo) as UserInfoViewModel;

Cookie的具体使用之来存储对象的更多相关文章

  1. localstorage存储对象

    之前在客户端存储数据一直用的是cookie,由于有大小等限制,随着html5时代的到来,现在大多数用的是localstorage存储数据: 例如: localStorage.setItem(" ...

  2. ***Redis hash是一个string类型的field和value的映射表.它的添加、删除操作都是O(1)(平均)。hash特别适合用于存储对象

    http://redis.readthedocs.org/en/latest/hash/hset.html HSET HSET key field value   (存一个对象的时候key存) 将哈希 ...

  3. JAVA之旅(二十)—HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习

    JAVA之旅(二十)-HashSet,自定义存储对象,TreeSet,二叉树,实现Comparator方式排序,TreeSet小练习 我们继续说一下集合框架 Set:元素是无序(存入和取出的顺序不一定 ...

  4. mybatis 一对多的注入 指的是连表查询时候 将不同的查询结果以列表存储对象形式 注入进去 多对一指的是 查询多条结果但都是一样的 只需注入一条

    mybatis 一对多的注入 指的是连表查询时候 将不同的查询结果以列表存储对象形式 注入进去 多对一指的是 查询多条结果但都是一样的 只需注入一条

  5. Token和SessionStorage(会话存储对象)

    sessionStorage数据只在当前标签页共享 存在本地   关闭浏览器后会清除数据(关闭标签页不会清楚) localStorage数据会存在浏览器中  浏览器关了数据也还在 只有清除缓存才会消失 ...

  6. localStorage存储对象,sessionStorage存储数组对象

    前言 最近在用angular做商城购物车的功能模块,因为angular的watch监听,数据只要发生变化就能很方便的自动渲染页面.但随即出现的问题是,之前用户操作的样式都会被重置掉. 例如我勾选了几个 ...

  7. 【Java】链表中存储对象的问题

    更新: 在一次搜索“变量声明在循环体内还是循环体外”问题时,碰见了一个这样的代码,与本文类似,代码如下: Document [] old ......//这是数据源 EntityDocument[] ...

  8. Qt中容器类应该如何存储对象(对象加入到容器时会发生拷贝,容器析构时,容器内的对象也会析构)

    Qt提供了丰富的容器类型,如:QList.QVector.QMap等等.详细的使用方法可以参考官方文档,网上也有很多示例文章,不过大部分文章的举例都是使用基础类型:如int.QString等.如果我们 ...

  9. redis存储对象

      redis主要存储类型最常用的五种数据类型: String Hash List Set Sorted set redis存储对象序列化和反序列化 首先来了解一下为什么要实现序列化 为什么要实现序列 ...

随机推荐

  1. 【linux】

    virtualbox   hyper-v     vmware      KVM      LXC Utils       Docker

  2. 保持iOS上键盘出现时输入框不被覆盖

    如果屏幕中的内容项目比较多,键盘就可能覆盖住文本输入框之类的对象.你必须调整你的内容,使得输入框保持可见. 你会想到哪些处理方法呢? 第一种, 临时调整窗口中各个视图的大小,使得键盘从下向上占领的区域 ...

  3. Running Central Admin on Multiple Servers within a Farm

    http://sharepoint.microsoft.com/blogs/fromthefield/Lists/Posts/Post.aspx?ID=60

  4. MVC的Ajax的异步请求

    MVC的Ajax的异步请求 在这里小写一下MVC的异步请求的一点小总结. 个人认为是有两种的,一种就是跟webform一样的,依旧是使用jQuery的$.get()方法,只是请求地址不同,webfor ...

  5. 让站长在SEO时更得心应手的六个细节

    分析一下SEO的心得,希望能对很多做网站优化和做网站推广的站长有帮助,现在做SEO的人越来网站推广越多,即使很多人在做,但不知道自己能否成功,自己的优化是否会见效,所以在这里还是来分享一下咱们在SEO ...

  6. Roy Li的学习和成长自传

    我不知道自己是什么时候从哪里来到这个世界上的,也许是石头里蹦出来的,也许是女娲捏出来的,上帝造出来的.上溯到我记忆的最前端,抱着我的好象 是一个女人,穿着白衣服,白得象石灰一样的那种.以至于后来我被告 ...

  7. 关于去哪儿网的UI自动化测试脚本(Python实现)

    UI自动化测试Qunar机票搜索场景访问Qunar机票首页http://flight.qunar.com,选择“单程”,输入出发.到达城市,选择today+7日后的日期,点“搜索”,跳转到机票单程搜索 ...

  8. POJ 1094 Sorting It All Out (拓扑排序,判断序列是否唯一,图是否有环)

    题意:给出n个字符,m对关系,让你输出三种情况:     1.若到第k行时,能判断出唯一的拓扑序列,则输出:         Sorted sequence determined after k re ...

  9. android音乐播放器开发教程

    android音乐播放器开发教程 Android扫描sd卡和系统文件 Android 关于录音文件的编解码 实现米聊 微信一类的录音上传的功能 android操作sdcard中的多媒体文件——音乐列表 ...

  10. C++ Variables and Basic Types Notes

    1. Type conversion: If we assign an out-of-range value to an object of unsigned type, the result is ...