Example #1
0
        /// <summary>
        ///     获取登陆用户的相关信息
        /// </summary>
        /// <returns></returns>
        protected UserContext GetUserContext()
        {
            var userContext = new UserContext();

            if (!Request.Properties.ContainsKey(HttpContextKey))
            {
                return(null);
            }

            if (Request.Properties.ContainsKey("userInfoContext"))
            {
                userContext = Request.Properties["userInfoContext"] as UserContext;
            }
            else
            {
                var request   = Request.Headers;
                var oToken    = request.SingleOrDefault(x => x.Key.ToLower() == "token");
                var oUserId   = request.SingleOrDefault(x => x.Key.ToLower() == "userid");
                var oAppkey   = request.SingleOrDefault(x => x.Key.ToLower() == "appkey");
                var strToken  = oToken.Key == null ? string.Empty : oToken.Value.FirstOrDefault();
                var strAppkey = oAppkey.Key == null ? string.Empty : oAppkey.Value.FirstOrDefault();
                var strUserId = oUserId.Key == null ? string.Empty : oUserId.Value.FirstOrDefault();

                //校验Token不能为空
                if (string.IsNullOrWhiteSpace(strToken))
                {
                    throw new YuanbeiHttpRequestException((int)ErrorCodeEnum.TokenIsExpired, "缺少token值");
                }


                //校验UserId不能为空
                //if (string.IsNullOrWhiteSpace(strUserId))
                //{
                //    throw new YuanbeiHttpRequestException((int)ErrorCodeEnum.TokenIsExpired, "缺少userId值");
                //}

                //获取用户的相关信息
                var user = _userQueryService.GetUserContext(strToken, strAppkey, strUserId);
                if (user != null)
                {
                    userContext.AccId        = user.AccId;
                    userContext.UserId       = user.UserId;
                    userContext.Operater     = user.UserId;
                    userContext.OperaterName = user.OperaterName;
                    userContext.Token        = user.Token;
                    userContext.AppKey       = user.AppKey;
                    userContext.Role         = user.Role;
                    userContext.MasterId     = user.MasterId;
                    userContext.PhoneNumber  = user.PhoneNumber;
                    userContext.CompanyName  = user.CompanyName;
                    userContext.Powers       = user.Powers;
                    userContext.AccVersion   = _userQueryService.GetAccountVersion(user.AccId);
                }
                userContext.IpAddress = Request.GetClientIpAddress();
            }

            if (userContext == null || userContext.AccId == 0 || userContext.UserId == 0)
            {
                throw new YuanbeiHttpRequestException((int)ErrorCodeEnum.TokenIsExpired, "没有找到用户相关信息");
            }

            // userContext.TrackingId = Request.Properties[Constants.RequestLogId].ToString();
            return(userContext);
        }