/// <summary> /// 获取当前用户 /// </summary> /// <returns></returns> public static PrincipalUser GetCurrentUser() { PrincipalUser principalUser; //通过Cookie获取当前登陆名,如果没有,则需要登录 string loginName = GetCurrentUserLoginName(); if (string.IsNullOrEmpty(loginName)) { principalUser = null; HttpContext.Current.Session[loginName] = null; HttpCookie cookies = HttpContext.Current.Request.Cookies[userGGNTokenCookie]; if (cookies != null) { cookies.Expires = DateTime.Today.AddDays(-1); HttpContext.Current.Response.Cookies.Add(cookies); HttpContext.Current.Request.Cookies.Remove(userGGNTokenCookie); } } else { //Session里面不存在 if (HttpContext.Current.Session[loginName] == null) { //检查数据库是否有此用户 Org_User user = GetOnlineUser(loginName); if (user == null) //没有说明有问题 { principalUser = (PrincipalUser)null; HttpContext.Current.Session[loginName] = null; HttpCookie cookies = HttpContext.Current.Request.Cookies[userGGNTokenCookie]; if (cookies != null) { cookies.Expires = DateTime.Today.AddDays(-1); HttpContext.Current.Response.Cookies.Add(cookies); HttpContext.Current.Request.Cookies.Remove(userGGNTokenCookie); } } else { //如果有此用户 principalUser = new PrincipalUser { Id = user.Id, LoginName = user.LoginName, UserName = user.UserName, UserCode = user.Code, IsManager = false, IsOutSide = user.IsOutSide, Phone = user.Phone }; //获取用户全信息数据 Org_UserQueryParam query = new Org_UserQueryParam { LoginName = loginName }; var userdatainfo = dalUser.GetUserFullInfo(query); //重建此session和缓存数据 principalUser.IsManager = userdatainfo.BaseInfo.IsSuperMgr; RedisHelper.Set("GGNCenterUser_" + loginName, userdatainfo, null); HttpContext.Current.Session[principalUser.LoginName] = userdatainfo; } } else //Session里面存在 { var sessionUser = (UserBackFullInfo)(HttpContext.Current.Session[loginName]); principalUser = new PrincipalUser(); principalUser.Id = sessionUser.BaseInfo.Id; principalUser.LoginName = sessionUser.BaseInfo.LoginName; principalUser.UserName = sessionUser.BaseInfo.UserName; principalUser.UserCode = sessionUser.BaseInfo.Code; principalUser.IsManager = sessionUser.BaseInfo.IsSuperMgr; principalUser.IsOutSide = sessionUser.BaseInfo.IsOutSide; principalUser.Phone = sessionUser.BaseInfo.Phone; } } return(principalUser); }
/// <summary> /// 根据用户登录名获取用户 /// </summary> /// <param name="loginName">登录名</param> /// <returns></returns> private static Org_User GetOnlineUser(string loginName) { Org_User user = dalUser.GetByLoginName(loginName); return(user); }
/// <summary> /// 获取当前用户 /// </summary> /// <returns></returns> public static ClaimsPrincipalUser GetCurrentUser() { ClaimsPrincipalUser principalUser; //取得 cookieValue string cookieValue = GetCookies(userCMPTokenCookie); //通过Cookie获取当前登陆名,如果没有,则需要登录 if (string.IsNullOrEmpty(cookieValue)) { return(null); } string loginName = DecryptLoginName(cookieValue); if (string.IsNullOrEmpty(loginName)) { principalUser = null; GlobalHttpContext.Current.Session.Set <UserBackFullInfo>(loginName, null); if (!string.IsNullOrEmpty(cookieValue)) //删除cookie { DeleteCookies(userCMPTokenCookie); } } else { //Session里面不存在 if (GlobalHttpContext.Current.Session.Get(loginName) == null) { //检查数据库是否有此用户 Org_User user = dalUser.GetByLoginName(loginName); if (user == null) //没有说明有问题 { principalUser = (ClaimsPrincipalUser)null; if (!string.IsNullOrEmpty(cookieValue)) //删除cookie { DeleteCookies(userCMPTokenCookie); } } else { //如果有此用户 principalUser = new ClaimsPrincipalUser { Id = user.Id, LoginName = user.LoginName, UserName = user.UserName, UserCode = user.Code, IsManager = false, IsOutSide = user.IsOutSide, Phone = user.Phone }; //获取用户全信息数据 Org_UserQueryParam query = new Org_UserQueryParam { LoginName = loginName }; var userdatainfo = dalUser.GetUserFullInfo(query); //重建此session和缓存数据 principalUser.IsManager = userdatainfo.BaseInfo.IsSuperMgr; RedisHelper.Set("CMPUser_" + loginName, userdatainfo, null); GlobalHttpContext.Current.Session.Set(principalUser.LoginName, userdatainfo); } } else //Session里面存在 { var sessionUser = GlobalHttpContext.Current.Session.Get <UserBackFullInfo>(loginName); principalUser = new ClaimsPrincipalUser(); principalUser.Id = sessionUser.BaseInfo.Id; principalUser.LoginName = sessionUser.BaseInfo.LoginName; principalUser.UserName = sessionUser.BaseInfo.UserName; principalUser.UserCode = sessionUser.BaseInfo.Code; principalUser.IsManager = sessionUser.BaseInfo.IsSuperMgr; principalUser.IsOutSide = sessionUser.BaseInfo.IsOutSide; principalUser.Phone = sessionUser.BaseInfo.Phone; } } return(principalUser); }