zoukankan      html  css  js  c++  java
  • .net Form认证扩展保存 Object 类型

    很多人都在使用.net form认证,但我们使用System.Web.Security.FormsAuthentication.SetAuthCookie(string userName, bool createPersistentCookie)时,发现很多时候我们需要保存一些object对象到cookie里边;这时候就需要修改方法来达到我们的需求。

    .net3.5 及以后版本提供把对象转化为JSON的方法。

            /// <summary>

            /// 序列化操作

            /// </summary>

            /// <typeparam name="T">泛型</typeparam>

            /// <param name="obj">序列化对象</param>

            /// <returns></returns>

            public static string Serialize<T>(T obj)

            {

                System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());

                MemoryStream ms = new MemoryStream();

                serializer.WriteObject(ms, obj);

                string retVal = Encoding.UTF8.GetString(ms.ToArray());

                ms.Dispose();

                return retVal;

            }

          /// <summary>

            /// 反序列化操作

            /// </summary>

            /// <typeparam name="T">泛型</typeparam>

            /// <param name="json">字符传</param>

            /// <returns></returns>

            public static T Deserialize<T>(string json)

            {

                T obj = Activator.CreateInstance<T>();

                MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));

                System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(obj.GetType());

                obj = (T)serializer.ReadObject(ms);

                ms.Close();

                ms.Dispose();

                return obj;

            }

    我们使用上边2个方法可以轻松实现Cookie保存任意类型的数据。

    写入数据: System.Web.Security.FormsAuthentication.SetAuthCookie(Comon.Serialize<Hashtable

    >(myHashtable)

    false);

    读取数据: Comon.Deserialize<Hashtable>(User.Identity.Name.ToString())

  • 相关阅读:
    通过反射获取Android通知栏高度
    Android 的EditText实现不可编辑
    Android 代码混淆、第三方平台加固加密、渠道分发 完整教程(图文)
    eclipse、myeclipse,svn插件subclipse 忘记密码的解决方法(win7、win8、xp)
    Eclipse 基于接口编程的时候,快速跳转到实现类的方法(图文)
    WIN7、WIN8 右键在目录当前打开命令行Cmd窗口(图文)
    eclipse,myeclipse开发环境下,maven远程部署到tomcat7服务器(图文)
    python之路——博客目录
    生成器和协程 —— 你想知道的都在这里了
    python3.7导入gevent模块报错的解决方案
  • 原文地址:https://www.cnblogs.com/zhangkjun/p/2107676.html
Copyright © 2011-2022 走看看