Ejemplo n.º 1
0
        /// <summary>
        /// 获取请求客户端信息
        /// </summary>
        /// <param name="request">HttpRequest</param>
        /// <returns>RequestClientInfo</returns>
        /// 时间:2016/7/27 14:31
        /// 备注:
        public static RequestClientInfo GetClientInfo(HttpRequest request)
        {
            ValidateOperator.Begin().NotNull(request, "HttpRequest");
            RequestClientInfo _clientInfo = new RequestClientInfo();

            //  _clientInfo.OSVersion = GetOsVersion(request);
            _clientInfo.BrowserVersion = GetBrowserVersion(request);
            _clientInfo.ComputerName   = GetComputerName(request);
            _clientInfo.Ip4Address     = GetIP4Address(request);
            return(_clientInfo);
        }
Ejemplo n.º 2
0
        public static RequestClientInfo GetClientInfo(string cont)
        {
            string            agent      = cont;
            var               uaParser   = Parser.GetDefault();
            var               client     = uaParser.Parse(agent);
            RequestClientInfo clientInfo = new RequestClientInfo();

            clientInfo.SourceCont = agent;
            clientInfo.OS         = client.OS.Family;
            clientInfo.Device     = client.Device.Family;
            clientInfo.Agent      = client.UserAgent.Family;
            clientInfo.IP         = GetClientIp();
            return(clientInfo);
        }
Ejemplo n.º 3
0
        public ResultDataInfo <LoginResultInfo> Login(LoginInfo info, RequestClientInfo clientInfo, string token = "")
        {
            int userId = 1;

            if (this.onlineUserMgr.Get(userId) != null)
            {
                this.onlineUserMgr.Remove(userId);
            }
            var result = new ResultDataInfo <LoginResultInfo>();

            result.IsSuccess = false;

            #region 验证

            var entity = this.context.UserRepository.Select.Where(m => m.UserName == info.Name).ToOne();
            //todo: 查找是否存在当前userId登录的数据
            if (entity == null)
            {
                result.ResultCode = OcmStatusCode.USER_NOT_FOUND; //账号不存在
                return(result);
            }
            if (!entity.Enable)
            {
                //禁用
                result.ResultCode = OcmStatusCode.USER_FORBIDDEN;
                return(result);
            }
            if (entity.Password != info.Pwd)
            {
                //密码错误
                result.ResultCode = OcmStatusCode.USER_PASSWORD_ERROR;
                return(result);
            }

            #endregion

            var onlineUser = new UserEntity(userId, this.readAuthRepository, clientInfo, this.onlineUserMgr);
            this.onlineUserMgr.Add(onlineUser);
            return(new ResultDataInfo <LoginResultInfo>()
            {
                Data = new LoginResultInfo()
                {
                    Token = onlineUser.Token,
                    User = onlineUser.UserInfo
                }
            });
        }
Ejemplo n.º 4
0
        public UserEntity(int userId,
                          IReadAuthRepository readAuthRepository,
                          RequestClientInfo clientInfo,
                          IOnlineUserMgr onlineUserMgr)
        {
            this.readAuthRepository = readAuthRepository;
            this.onlineUserMgr      = onlineUserMgr;
            this.UserInfo           = this.readAuthRepository.GetUserInfo(userId);
            if (this.UserInfo == null)
            {
                this.UserInfo = new UserInfo()
                {
                    Id = userId
                };
            }
            this.ClientInfo  = clientInfo;
            this.Option      = new UserAuthOption();
            this.LoginTime   = DateTime.Now;
            this.ExpiredTime = this.LoginTime.AddSeconds(this.Option.UserLoginExpireIn);
            //to do generate token
            string tokenstr = $"token_{UserInfo.Id}_{UserInfo.UserName}_{clientInfo.IP}_{clientInfo.OS}_{this.LoginTime.Ticks}";

            this.Token = this.GetMd5(tokenstr);
        }