`
jiasongmao
  • 浏览: 647817 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

通用身份验证类:AuthenticationCookie

    博客分类:
  • .NET
 
阅读更多
/// <summary>
    /// Cookie身份验证辅助类
    /// </summary>
    public class AuthenticationCookie
    {

        /// <summary>
        /// 判断用户是否登录成功并授权
        /// </summary>
        public static bool IsAuthenticated
        {
            get
            {
                try
                {
                    return HttpContext.Current.User.Identity.IsAuthenticated;
                }
                catch (Exception ex)
                {
                    throw new Exception("在非Http访问环境下无法访问用户信息");
                }
            }
        }

        /// <summary>
        /// 授权操作
        /// <remarks>
        /// 在验证登录的用户合法后调用该方法
        /// </remarks>
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="userName">用户名,必须使用标识用户唯一的字段</param>
        /// <param name="user"></param>
        /// <param name="rememberMe"></param>
        public static void SetAuthentication<T>(string userName, T user, bool rememberMe = false)
        {
            string userData = SerializerHelper.JsonSerialize(user);
            //创建身份认证票据
            FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddDays(7), rememberMe, userData);
            //对票据进行加密处理
            string ticketEncString = FormsAuthentication.Encrypt(ticket);

            HttpContext.Current.Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, ticketEncString));
        }

        /// <summary>
        /// 获取用户信息
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static T GetUser<T>()
        {
            string encCookie = HttpContext.Current.Request.Cookies[FormsAuthentication.FormsCookieName].Value;
            FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(encCookie);
            string userData = ticket.UserData;
            T user = SerializerHelper.JsonDeserialize<T>(userData);
            return user;
        }

    }

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics