Пример #1
0
        /// <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);
        }
Пример #2
0
        /// <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);
        }