原来的网站是用session保存的用户类,现在要改成cookie,请问大家如何用cookie保存用户的类啊?

解决方案 »

  1.   

    给你一个我以前的用户信息cookie类,你参考一下
    using System;
    using System.Web;
    using System.Data.SqlClient;
    using System.Collections.Generic;
    using System.Text;
    /// <summary>
    /// 用户的信息
    /// </summary>
    public class UserInfo
    {
        #region 当前用户信息    /// <summary>
        /// 当前用户的信息
        /// </summary>
        public static class CurrentUser
        {
            /// <summary>
            /// 用户id
            /// </summary>
            public static int UserID
            {
                get
                {
                    if (HttpContext.Current.Request.Cookies["UserID"] != null)
                    {
                        return Convert.ToInt32(HttpContext.Current.Request.Cookies["UserID"].Value);
                    }
                    return 0;
                }
                set
                {
                    HttpContext.Current.Response.Cookies["UserID"].Domain = GetHostName();
                    HttpContext.Current.Response.Cookies["UserID"].Value = value.ToString();
                }
            }        /// <summary>
            /// 用户名
            /// </summary>
            public static string Name
            {
                get
                {
                    if (HttpContext.Current.Request.Cookies["UserName"] != null)
                    {
                        return HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies["UserName"].Value.ToString());
                    }
                    return "";
                }
                set
                {
                    HttpContext.Current.Response.Cookies["UserName"].Domain = GetHostName();
                    HttpContext.Current.Response.Cookies["UserName"].Value = HttpUtility.UrlEncode(value.ToString());
                }
            }        /// <summary>
            /// 登录名
            /// </summary>
            public static string LoginID
            {
                get
                {
                    if (HttpContext.Current.Request.Cookies["LoginID"] != null)
                    {
                        return HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies["LoginID"].Value.ToString());
                    }
                    return "";
                }
                set
                {
                    HttpContext.Current.Response.Cookies["LoginID"].Domain = GetHostName();
                    HttpContext.Current.Response.Cookies["LoginID"].Value = HttpUtility.UrlEncode(value.ToString());
                }
            }        /// <summary>
            /// 上次登录时间
            /// </summary>
            public static DateTime LastLoginDate
            {
                get
                {
                    if (HttpContext.Current.Request.Cookies["LastLoginDate"] != null)
                    {
                        return SafeConvert.ToDateTime(HttpContext.Current.Request.Cookies["LastLoginDate"].Value);
                    }
                    return DateTime.MinValue;
                }
                set
                {
                    HttpContext.Current.Response.Cookies["LastLoginDate"].Domain = GetHostName();
                    HttpContext.Current.Response.Cookies["LastLoginDate"].Value = value.ToString();
                }
            }        /// <summary>
            /// 用户角色
            /// </summary>
            public static string RoleName
            {
                get
                {
                    if (HttpContext.Current.Request.Cookies["RoleName"] != null)
                    {
                        return HttpUtility.UrlDecode(HttpContext.Current.Request.Cookies["RoleName"].Value);
                    }
                    return "";
                }
                set
                {
                    HttpContext.Current.Response.Cookies["RoleName"].Domain = GetHostName();
                    HttpContext.Current.Response.Cookies["RoleName"].Value = HttpUtility.UrlEncode(value.ToString());
                }
            }
            /// <summary>
            /// 用户角色
            /// </summary>
            public static string RoleCode
            {
                get
                {
                    if (HttpContext.Current.Request.Cookies["RoleCode"] != null)
                    {
                        return HttpUtility.UrlDecode( HttpContext.Current.Request.Cookies["RoleCode"].Value);
                    }
                    return "";
                }
                set
                {
                    HttpContext.Current.Response.Cookies["RoleCode"].Domain = GetHostName();
                    HttpContext.Current.Response.Cookies["RoleCode"].Value = HttpUtility.UrlEncode(value.ToString());
                }
            }        /// <summary>
            /// 当前页面URL,用于点击刷新按钮返回到原页面...
            /// </summary>
            public static string CurrentPageURL
            {
                get
                {
                    if (HttpContext.Current.Request.Cookies["CurrentPageURL"] != null)
                    {
                        return HttpContext.Current.Request.Cookies["CurrentPageURL"].Value;
                    }
                    return string.Empty;
                }
                set
                {
                    HttpContext.Current.Response.Cookies["CurrentPageURL"].Domain = GetHostName();
                    HttpContext.Current.Response.Cookies["CurrentPageURL"].Value = value;
                }
            }        //是否登录...
            public static bool IsLogin()
            {
                return UserID>0 ? true : false;
            }
          
            public static void Clear()
            {
                UserInfo.CurrentUser.UserID = 0;
                UserInfo.CurrentUser.Name = "";
                UserInfo.CurrentUser.LoginID = "";
                UserInfo.CurrentUser.LastLoginDate = DateTime.Now;
                UserInfo.CurrentUser.RoleCode = "";
                UserInfo.CurrentUser.CurrentPageURL = "";
                       }
        }    # endregion 当前用户结束    /// <summary>
        /// 获取主机域名...
        /// </summary>
        /// <returns></returns>
        private static string GetHostName()
        {
            string HostName = HttpContext.Current.Request.Url.Host.ToString(); //获取URL主机地址
            string[] UserHost = HostName.Split(new Char[] { '.' });
            if (UserHost.Length == 3)
            {
                HostName = string.Format("{0}.{1}", UserHost[1], UserHost[2]);
            }
            if (HostName == "localhost")
                HostName = "";
            return HostName;
        }   
    }