Cookie的具体使用之来存储对象
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
定义一个简单的用户实体:
- public class UserInfo
- {
- /// <summary>
- /// 用户名称
- /// </summary>
- public string UserName { get; set; }
- /// <summary>
- /// 用户密码
- /// </summary>
- public string UserPwd { get; set; }
- /// <summary>
- /// 用户级别
- /// </summary>
- public string UserLevel { get; set; }
- }
将对象序列化成Json串:
- /// <summary>
- /// 将对象序列化成Json
- /// </summary>
- /// <param name="obj">需要序列化的对象</param>
- /// <returns>序列化后的字符串</returns>
- public static string ObjectToJson(object obj)
- {
- return Newtonsoft.Json.JsonConvert.SerializeObject(obj);
- }
将Json串反序列化成对象:
- /// <summary>
- /// 从Json字符串反序列化为对象
- /// </summary>
- /// <param name="jsonString">Json字符串</param>
- /// <param name="obj">要生成的对象类型</param>
- /// <returns>反序列化后的对象</returns>
- public static object JsonToObject(string jsonString)
- {
- return Newtonsoft.Json.JsonConvert.DeserializeObject<UserInfo>(jsonString);
- }
Cookie的使用
将实体序列化为Json并存入Cookie中:
//获取UserInfo对象
- UserInfo enUser=new UserInfo()
- {
- UserName="Danny",
- UserPwd="123456",
- UserLevel="admin"
- }
//创建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;
相关文章
- php 腾讯云 对象存储V5版本 获取返回的上传文件的链接方法
- 华为云实战 之 对象存储的使用以及与腾讯云COS对比
- DT添加七牛云对象存储插件功能
- 一文读懂容器存储接口 CSI
- 干到底--三种存储类型比较-文件、块、对象存储
- Redis开发:hash存储自定义Java对象及value的序列化器设置
- SAP CRM数据库表COMM_PR_FRG_ROD的存储逻辑
- SAP系统和微信集成的系列教程之七:使用Redis存储微信用户和公众号的对话记录
- Atitti 大话存储读后感 attilax总结
- Atitit. 类与对象的存储实现
- 利用云存储快速实现网站备份
- 如何通过云存储实现大文件的断点下载和上传
- 从两个模型带你了解DAOS 分布式异步对象存储
- 存储成本降低80%,“大智慧”的选择
- 弹性文件服务解密 -- 块存储、文件存储、对象存储的区别
- 华为云实战 之 对象存储的使用以及与腾讯云COS对比
- y15.第一章 Ceph企业级存储实战进阶 -- 对象存储RadosGW 使用(十五)
- y14.第一章 Ceph企业级存储实战进阶 -- 对象存储RadosGW 使用(十四)
- y9.第一章 Ceph企业级存储实战进阶 -- Ceph 集群应用基础(九)
- spark sql架构和原理——和Hive类似 dataframe无非是内存中的table而已 底层原始数据存储可以是parquet hive json avro等
- Python实现将图片上传到基于阿里云OSS对象存储的图床
- 使用阿里云OSS对象存储搭建个人图床
- 高性能分布式对象存储——MinIO(环境部署)
- 阿里云OSS对象存储版本控制功能详解及收费说明
- 在 Ubuntu 上添加或删除 PPA 存储库
- 12 图入门高性能分布式对象存储 MinIO