Exemplo n.º 1
0
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="mobile"></param>
        /// <param name="password"></param>
        /// <param name="userType"></param>
        /// <returns></returns>
        private ResponseUserDTO CheckLogin(RequestUserLoginDTO dto)
        {
            ResponseUserDTO userModel = null;

            if (!string.IsNullOrEmpty(dto.OpenID))
            {
                userModel = GetUserInfoByOpenID(dto.OpenID);
                return(userModel);
            }
            else
            {
                //获取手机号码
                userModel = GetUserInfoByMobile(dto.Mobile, dto.UserType);

                //用户存在,状态正常,未被删除
                if (userModel != null)
                {
                    string shapassword = StringEncrypt.EncryptWithSHA(dto.Password.Trim());
                    string md5password = StringEncrypt.EncryptWithMD5(dto.Password.Trim());

                    //登录密码正确
                    if (userModel.Password == shapassword || userModel.Password == md5password)
                    {
                        return(userModel);
                    }
                }
            }
            return(null);
        }
Exemplo n.º 2
0
        public ApiResult Login([FromBody] RequestUserLoginDTO model)
        {
            if (model != null)
            {
                var userService = new BLL.User.Implements.UserService();
                var appToken    = CurrentOperatorApp;
                model.AppID = appToken.AppId;

                return(userService.Login(model));
            }
            else
            {
                return(EnumApiStatus.BizError.ToApiResultForApiStatus());
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 用户登录
        /// </summary>
        /// <param name="user"></param>
        public ApiResult Login(RequestUserLoginDTO dto)
        {
            //检查账号和密码时长正确
            var user = CheckLogin(dto);

            //账号和密码正确
            if (user != null && !string.IsNullOrEmpty(user.UserID))
            {
                // 如果指定用户角色,则验证用户角色是否正确
                if (dto.UserRole.HasValue)
                {
                    UserService         roleService = new UserService();
                    List <EnumRoleType> roles       = roleService.GetUserRoles(user.UserID);
                    if (!roles.Exists(x => x == dto.UserRole.Value))
                    {
                        return(EnumApiStatus.BizUserLoginAccountOrPwdFail.ToApiResultForApiStatus());
                    }
                }

                //获取服务端票据
                UserLoginServerTicketDTO serverTicket = new UserLoginServerTicketDTO()
                {
                    OpenID = dto.OpenID,
                    UserID = user.UserID,
                };

                if (serverTicket != null)
                {
                    var clientTicket = new ResponseUserTicketReturnDTO()
                    {
                        Identifier = user.Identifier,
                        Mobile     = user.Mobile,
                        UserID     = serverTicket.UserID,
                        UserToken  = string.IsNullOrEmpty(dto.UserToken) ? Guid.NewGuid().ToString("N") : dto.UserToken,
                        UserCNName = user.UserCNName,
                        PhotoUrl   = user.PhotoUrl,
                    };

                    ApiSecurityService.SetUserTicket(serverTicket, clientTicket.UserToken);

                    using (XuHos.EventBus.MQChannel channel = new EventBus.MQChannel())
                    {
                        channel.BeginTransaction();

                        channel.Publish <XuHos.EventBus.Events.UserLoginedEvent>(new EventBus.Events.UserLoginedEvent()
                        {
                            UserID    = clientTicket.UserID,
                            LoginTime = DateTime.Now,
                            UserType  = clientTicket.UserType,
                        });

                        channel.Publish <XuHos.EventBus.Events.UserOperatorLogEvent>(new EventBus.Events.UserOperatorLogEvent()
                        {
                            UserID       = clientTicket.UserID,
                            OperatorTime = DateTime.Now,
                            UserType     = clientTicket.UserType,
                            OperatorType = EnumUserOperationType.Login,
                            OperatorName = "",
                            OrgID        = CurrentOperatorOrgID,
                            Remark       = "",
                            ModuleName   = ""
                        });

                        channel.Commit();
                    }


                    AddUserLoginLog(serverTicket, dto.UserLoginType, dto.Mobile);

                    return(clientTicket.ToApiResultForObject());
                }
                else
                {
                    return(EnumApiStatus.BizError.ToApiResultForApiStatus("LoginTicket Is Null"));
                }
            }
            else
            {
                return(EnumApiStatus.BizUserLoginAccountOrPwdFail.ToApiResultForApiStatus());

                #endregion
            }
        }