///<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); } }
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)); }
/// <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(); }
/// <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\":\"上传成功。\"}}"); }