• 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

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

     
    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;

  • 相关阅读:
    cdoj1325卿学姐与基本法
    HUAS 1476 不等数列(DP)
    BZOJ 1818 内部白点(离散化+树状数组)
    BZOJ 1816 扑克牌(二分)
    BZOJ 1801 中国象棋(DP)
    BZOJ 1791 岛屿(环套树+单调队列DP)
    BZOJ 1797 最小割(最小割割边唯一性判定)
    BZOJ 1789 Y形项链(思维)
    BZOJ 1787 紧急集合(LCA)
    BZOJ 1786 配对(DP)
  • 原文地址:https://www.cnblogs.com/1175429393wljblog/p/5646902.html
Copyright © 2020-2023  润新知