예제 #1
0
        /// <summary>
        /// 消息发送时的内部方法,将逻辑结构体数据存放到ls中
        /// 子类无需重载
        /// </summary>
        public void SetByte <T>(T t, ref LusuoStream ls)
        {
            ls.WriteInt(0);           // 预留总字节数
            ls.WriteUShort(msgID);    // 写消息编号
            ls.WriteInt(eno);         // 写eno
            byte[] bytes = ProtobufHelper.Serialize <T>(t);
            ls.Write(ref bytes);      // 写具体结构体
            ls.Seek(0);
            // 内容字节数
            int contentLen = StringHelper.s_ShortSize + StringHelper.s_IntSize + bytes.Length;

            ls.WriteInt(contentLen);                         // 再次写内容长度
            msgMaxLen = StringHelper.s_IntSize + contentLen; // 长度字节数 + 内容字节数
        }
예제 #2
0
        /// <summary>
        /// 登录方法
        /// </summary>
        /// <param name="db"></param>
        /// <param name="lmodel"></param>
        /// <returns></returns>
        public ResultJson Logins(SqlSugarClient db, vLoginModel lmodel)
        {
            var json = new ResultJson()
            {
                backurl = "/fytadmin/index/"
            };
            var model = db.Queryable <sysadmin>().Single(m => m.LoginName == lmodel.loginname);

            if (model != null)
            {
                LogProvider.Error(LoggerEnums.Info.ToString(), DES3Encrypt.EncryptString(lmodel.password));
                if (model.LoginPwd.Equals(DES3Encrypt.EncryptString(lmodel.password)))
                {
                    //判断是否冻结
                    if (model.Status)
                    {
                        json.data = model;
                        //根据管理员的角色ID查询菜单,目前支持模块化权限验证
                        var roleModel = db.Queryable <sysrolemenu>().Where(m => m.RoleID == model.RoleID).ToList();
                        var mlist     = roleModel.Select(item => item.MenuID).ToList();
                        //根据角色关联的菜单ID,查询菜单集合
                        var menuList   = db.Queryable <sysmenu>().Where(m => mlist.Contains(m.ID)).ToList();
                        var adminModel = new AdminModel()
                        {
                            ID = model.ID, sysadmin = model, sysMenu = menuList
                        };
                        //将用户登录信息保存的session中
                        SessionHelper.SetSession(KeyHelper.SESSION_ADMIN_INFO, ProtobufHelper.Serialize(adminModel));
                        //将登录ID保存到cookie中
                        CookieHelper.SetCookie(KeyHelper.COOKIE_ADMIN_USERID, DES3Encrypt.EncryptString(model.ID.ToString()), 1);
                    }
                    else
                    {
                        json.status = 403;
                        json.msg    = "您的账号被冻结,请联系管理员~";
                    }
                }
                else
                {
                    json.status = 402;
                    json.msg    = "密码错误~";
                }
            }
            else
            {
                json.status = 401;
                json.msg    = "用户名错误~";
            }
            return(json);
        }
예제 #3
0
파일: NetAsynSend.cs 프로젝트: mengtest/fs
        public void SendMessage <T>(ushort msgID, T t)
        {
            LusuoStream stream = new LusuoStream(new byte[m_uBufferSize]);

            stream.WriteInt(0);                  // 预留总字节数
            stream.WriteUShort(msgID);           // 写消息编号
            stream.WriteInt(1);
            byte[] bytes = ProtobufHelper.Serialize <T>(t);
            stream.Write(ref bytes);              // 写具体结构体
            stream.Seek(0);
            // 内容字节数
            int contentLen = StringHelper.s_ShortSize + StringHelper.s_IntSize + bytes.Length;

            stream.WriteInt(contentLen);                            // 再次写内容长度
            stream.m_byteLen = StringHelper.s_IntSize + contentLen; // 长度字节数 + 内容字节数

            _m_listMsg.Add(stream);
        }
예제 #4
0
        public void ProtobufPost()
        {
            var stream = new MemoryStream();

            ProtobufHelper.Serialize(stream, _dtos);
            stream.Seek(0, SeekOrigin.Begin);
            var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "api/Values")
            {
                Content = new StreamContent(stream)
            };

            httpRequestMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-protobuf");
            httpRequestMessage.Headers.Add("Accept", "application/x-protobuf");

            // HTTP POST with Protobuf Request Body
            var responseForPost = _protobufHttpClient.SendAsync(httpRequestMessage);

            var result = ProtobufHelper.Deserialize <List <TestDto> >(
                responseForPost.Result.Content.ReadAsStreamAsync().Result);
        }
        public void TestProtobuf()
        {
            var client = _server.CreateClient();
            var dtos   = GetDtos();
            var stream = new MemoryStream();

            ProtobufHelper.Serialize(stream, dtos);
            stream.Seek(0, SeekOrigin.Begin);
            var httpRequestMessage = new HttpRequestMessage(HttpMethod.Post, "api/Values/Post")
            {
                Content = new StreamContent(stream)
            };

            httpRequestMessage.Content.Headers.ContentType = new MediaTypeHeaderValue("application/x-protobuf");
            httpRequestMessage.Headers.Add("Accept", "application/x-protobuf");

            // HTTP POST with Protobuf Request Body
            var response = client.SendAsync(httpRequestMessage).Result;

            var result = ProtobufHelper.Deserialize <List <TestDto> >(
                response.Content.ReadAsStreamAsync().Result);

            Assert.True(CompareDtos(dtos, result));
        }
예제 #6
0
 public static byte[] ToProtoBuf <T>(this T obj)
 {
     return(ProtobufHelper.Serialize(obj));
 }