Ejemplo n.º 1
0
        ///<summary>写入信息</summary>
        ///<param name="strategy">策略</param>
        ///<param name="appKey">AppKey</param>
        /// <param name="accountIdentity">帐号会话唯一标识</param>
        /// <param name="account">帐号信息</param>
        ///<returns>返回一个实例<see cref="AccountCacheInfo"/>的详细信息</returns>
        public void Write(IAccountStorageStrategy strategy, string appKey, string accountIdentity, IAccountInfo account)
        {
            // 过滤空值
            if (string.IsNullOrEmpty(accountIdentity))
            {
                return;
            }

            AccountCacheInfo param = strategy.Serialize(appKey, accountIdentity, account);

            param.Date = DateTime.Now;

            // 更新字典信息
            if (cacheStorage.ContainsKey(param.AccountIdentity))
            {
                cacheStorage[param.AccountIdentity] = param;
            }
            else
            {
                cacheStorage.Add(param.AccountIdentity, param);
            }

            // 更新数据库信息
            if (this.IsExist(param.AccountIdentity))
            {
                this.Update(param);
            }
            else
            {
                param.ValidFrom = DateTime.Now;
                param.ValidTo   = DateTime.Now.AddHours(SessionsConfigurationView.Instance.SessionTimeLimit);

                this.Insert(param);
            }
        }
Ejemplo n.º 2
0
        public string Read(XmlDocument doc)
        {
            string key = XmlHelper.Fetch("key", doc);

            StringBuilder outString = new StringBuilder();

            IAccountStorageStrategy strategy = KernelContext.Current.AuthenticationManagement.GetAccountStorageStrategy();

            IAccountInfo param = strategy.Deserialize(SessionContext.Instance.AccountCacheService.Read(key));

            outString.Append("{\"data\":" + AjaxUtil.Parse <IAccountInfo>(param) + ",");

            outString.Append(MessageObject.Stringify("0", I18n.Strings["msg_query_success"], true) + "}");

            return(outString.ToString());
        }
 /// <summary>写入帐号缓存信息</summary>
 /// <param name="strategy">存储策略</param>
 /// <param name="accountIdentity">帐号会话唯一标识</param>
 /// <param name="account">帐号信息</param>
 public void Write(IAccountStorageStrategy strategy, string appKey, string accountIdentity, IAccountInfo account)
 {
     this.m_AccountCacheService.Write(strategy, appKey, accountIdentity, account);
 }
 /// <summary>获取当前验证的帐号信息</summary>
 /// <typeparam name="T"></typeparam>
 /// <param name="strategy">存储策略</param>
 /// <param name="accountIdentity">存储策略</param>
 /// <returns></returns>
 public T GetAuthAccount <T>(IAccountStorageStrategy strategy, string accountIdentity) where T : IAccountInfo
 {
     return((T)this.AccountCacheService.GetAuthAccount(strategy, accountIdentity));
 }
Ejemplo n.º 5
0
        /// <summary>获取当前帐号缓存信息</summary>
        /// <param name="strategy">帐号存储策略</param>
        public IAccountInfo GetAuthAccount(IAccountStorageStrategy strategy, string accountIdentity)
        {
            AccountCacheInfo param = this.Read(accountIdentity);

            return(strategy.Deserialize(param));
        }
 /// <summary>默认构造函数</summary>
 public GenericAuthenticationManagement()
 {
     this.strategy = new GenericAccountStorageStrategy();
 }
Ejemplo n.º 7
0
        /// <summary>上传头像</summary>
        /// <param name="doc"></param>
        /// <returns></returns>
        public string Upload(XmlDocument doc)
        {
            StringBuilder outString = new StringBuilder();

            string data = XmlHelper.Fetch("data", doc);

            Bitmap bitmap = null;

            int height;
            int width;

            IAccountInfo account = KernelContext.Current.User;

            if (account == null)
            {
                return(MessageObject.Stringify("1", "必须登陆后才能上传头像。"));
            }

            string directoryName = this.GetDirectoryName(account.Id);

            string path = MembershipConfigurationView.Instance.AvatarPhysicalFolder + directoryName + "\\";

            string filePath = null;

            if (!Directory.Exists(path))
            {
                DirectoryHelper.Create(path);
            }

            byte[] buffer = Convert.FromBase64String(data);

            using (MemoryStream stream = new MemoryStream(buffer))
            {
                bitmap = new Bitmap(stream);
            }

            string[] sizes = MembershipConfigurationView.Instance.AvatarSizes.Split(',');

            height = width = Convert.ToInt32(sizes[0]);

            filePath = string.Format(@"{0}\{1}_" + height + "x" + width + ".png", path, account.Id);

            bitmap = KiResizeImage(bitmap, width, height);

            bitmap.Save(filePath, ImageFormat.Png);

            // 设置头像记录
            filePath = account.CertifiedAvatar = "{avatar}" + directoryName + "/" + account.Id + "_" + height + "x" + width + ".png";

            MembershipManagement.Instance.AccountService.SetCertifiedAvatar(account.Id, filePath);

            IAccountStorageStrategy strategy = KernelContext.Current.AuthenticationManagement.GetAccountStorageStrategy();

            string accountIdentity = KernelContext.Current.AuthenticationManagement.GetIdentityValue();

            SessionContext.Instance.Write(strategy, accountIdentity, account);

            // 保存其他格式图片
            for (int i = 1; i < sizes.Length; i++)
            {
                height = width = Convert.ToInt32(sizes[i]);

                filePath = string.Format(@"{0}\{1}_" + height + "x" + width + ".png", path, account.Id);

                bitmap = KiResizeImage(bitmap, height, height);

                bitmap.Save(filePath, ImageFormat.Png);
            }

            // 记录帐号操作日志
            MembershipManagement.Instance.AccountLogService.Log(account.Id, "membership.account.avatar.upload", "【" + account.Name + "】更新了自己的头像,【IP:" + IPQueryContext.GetClientIP() + "】。", account.Id);

            return("{\"data\":{\"virtualPath\":\"" + account.CertifiedAvatar.Replace("{avatar}", MembershipConfigurationView.Instance.AvatarVirtualFolder).Replace("//", "/") + "\"},\"message\":{\"returnCode\":0,\"value\":\"上传成功。\"}}");
        }