/// <summary> /// 获取当前用户 /// </summary> /// <param name="context">上下文对象</param> /// <returns></returns> public static UserInfo GetCurretnUser(HttpContext context) { lock (locker) { try { if (context == null) { return(null); } FormsIdentity identity = context.User.Identity as FormsIdentity; if (identity != null) { //取用户基本信息 UserInfo userInfo = JsonHelper.Deserialize <UserInfo>(identity.Ticket.UserData); UserExtendBase userExtend = GetUserExtendCache(userInfo.UserName); if (userInfo.UserName != "admin" && userExtend == null) { //重新加载用户扩展信息 userExtend = UserExtendEventHandler.GetUserExtendInfo(userInfo); } userInfo.ExtendUserObject = userExtend; return(userInfo); } } catch { } return(null); } }
public static event EventUserExtend BindUserExtendEvent; //定义事件 /// <summary> /// 获取用户扩展对象 /// </summary> /// <param name="userInfo">用户信息</param> /// <returns></returns> public static UserExtendBase GetUserExtendInfo(UserInfo userInfo) { if (BindUserExtendEvent != null) { UserExtendBase extend = BindUserExtendEvent(null, new EventUserArgs(userInfo));//有返回值了 return(extend); } return(null); }
/// <summary> /// 缓存用户扩展信息 /// </summary> /// <param name="username">用户名</param> /// <param name="extend">用户扩展信息</param> public static void CacheUserExtendInfo(string username, UserExtendBase extend) { if (!string.IsNullOrEmpty(username) && extend != null) { ICacheProvider cacheFactory = CacheFactory.GetCacheInstance(CacheProviderType.LOCALMEMORYCACHE); if (cacheFactory != null) { cacheFactory.Set(username, extend); } } }
/// <summary> /// 获取用户扩展信息 /// </summary> /// <param name="username">用户名</param> /// <returns></returns> public static UserExtendBase GetUserExtendCache(string username) { if (!string.IsNullOrEmpty(username)) { try { UserExtendBase extend = null; bool rs = userExtendCache.TryGetValue(username, out extend); return(extend); } catch { } } return(null); }
/// <summary> /// 缓存用户扩展信息 /// </summary> /// <param name="username">用户名</param> /// <param name="extend">用户扩展信息</param> public static void CacheUserExtendInfo(string username, UserExtendBase extend) { if (!string.IsNullOrEmpty(username) && extend != null) { try { if (!userExtendCache.ContainsKey(username)) { userExtendCache.TryAdd(username, extend); } } catch { } } }
/// <summary> /// 获取当前用户 /// </summary> /// <param name="context">上下文对象</param> /// <returns></returns> public static UserInfo GetCurretnUser(HttpContext context) { lock (locker) { try { if (context == null) { return(null); } AuthenticateResult result = context.AuthenticateAsync().Result; if (result == null || result.Principal == null || result.Principal.Claims == null || result.Principal.Claims.Count() == 0) { return(null); } //取用户基本信息 Claim claim = result.Principal.Claims.Where(x => x.Type == ClaimTypes.UserData).FirstOrDefault(); if (claim != null && !string.IsNullOrEmpty(claim.Value)) { UserInfo userInfo = JsonHelper.Deserialize <UserInfo>(claim.Value); if (userInfo != null) { UserExtendBase userExtend = GetUserExtendCache(userInfo.UserName); if (userInfo.UserName != "admin" && userExtend == null) { //重新加载用户扩展信息 userExtend = UserExtendEventHandler.GetUserExtendInfo(userInfo); } userInfo.ExtendUserObject = userExtend; try { if (string.IsNullOrEmpty(userInfo.ClientIP)) { userInfo.ClientIP = Globals.GetClientIp(context.Request); } } catch { } return(userInfo); } } } catch { } return(null); } }