public string queryTest(string code, int aa) { var user = new Modules.Users() { UserName = "******", Password = "******", RegisterIP = "1", Token = "2", Amount = 0, RegisterTime = DateTime.Now, LastLoginTime = DateTime.Now, status = 0 }; _DbContext.Users.Add(user); _DbContext.SaveChanges(); return(code + aa.ToString()); }
public RegisterResponse Register(RegisterRequest request) { var user = _DbContext.Users.FirstOrDefault(x => x.UserName == request.UserInfo.UserName); if (user != null) { return new RegisterResponse() { Code = -1, Msg = "用户已存在" } } ; var salt = _Configuration.GetValue <string>("salt"); user = new Modules.Users(); user.UserName = request.UserInfo.UserName; user.Email = request.UserInfo.Email; user.Password = string.IsNullOrWhiteSpace(salt) ? request.UserInfo.Password : ComputeSha256Hash(salt + request.UserInfo.Password); user.RegisterIP = Request.HttpContext.Connection.RemoteIpAddress.ToString(); user.RegisterTime = DateTime.Now; user.LastLoginTime = DateTime.Now; user.status = 0; user.Amount = 0; _DbContext.Users.Add(user); _DbContext.SaveChanges(); #region 填充返回值 return(new RegisterResponse() { Code = 0, Msg = "注册成功!", }); #endregion }
public async Task <LoginResponse> Login(LoginRequest request) { Modules.Users user = null; Func <Task <LoginResponse> > f = async() => { if (request.UserInfo.UserID != null) { user = _DbContext.Users.FirstOrDefault(x => x.Id == request.UserInfo.UserID); } if (!string.IsNullOrWhiteSpace(request.UserInfo.UserName) && user != null) { user = _DbContext.Users.FirstOrDefault(x => x.UserName == request.UserInfo.UserName); } if (user == null) { return new LoginResponse() { Code = -1, Msg = "用户不存在" } } ; var salt = _Configuration.GetValue <string>("salt"); var password = string.IsNullOrWhiteSpace(salt) ? request.UserInfo.Password : ComputeSha256Hash(salt + request.UserInfo.Password); if (user.Password != password) { return new LoginResponse() { Code = -1, Msg = "密码不正确" } } ; //如果用户的Token不是空的,尝试从redis清理旧的 if (!string.IsNullOrWhiteSpace(user.Token)) { user = await _Redis.HashGetAsync <Modules.Users>("Users", user.Token); await _Redis.HashDeleteAsync("Users", user.Token); } user.Token = ComputeSha256Hash(salt + DateTime.Now.ToString("yyyyMMddHHmmss")); user.LastLoginTime = DateTime.Now; await _Redis.HashSetAsync <Modules.Users>("Users", user.Token, user); await _DbContext.SaveChangesAsync(); return(new LoginResponse() { Code = 0, Msg = "成功!", UserInfo = new UserInfo() { UserID = user.Id, UserName = user.UserName, Email = user.Email, Amount = user.Amount, Token = user.Token, } }); }; #region 填充返回值 return(await f()); #endregion } }//End Class }
/// <summary> /// /// </summary> /// <returns></returns> public async Task Run() { while (!CancellationTokenSource.IsCancellationRequested) { var buff = new ArraySegment <byte>(new byte[1024 * 1024 * 1]);//1M缓冲区 var result = await _WS.ReceiveAsync(buff, CancellationTokenSource.Token); if (result.MessageType != WebSocketMessageType.Text) { continue; } var msg = Encoding.UTF8.GetString(buff.Array).Trim(); var msgbase = JsonConvert.DeserializeObject <Messages.MessageBase>(msg); switch (msgbase.MessageType) { #region 查询方块 case Enums.MessageType.queryBlocks: { var param = JsonConvert.DeserializeObject <Messages.QueryBlocks>(msgbase.Params); var blocks = await _MapAccessQueue.AddTaskAsync2(queryBlocks, param); var messageresult = new Messages.MessageBase() { MessageType = Enums.MessageType.queryBlocks, Params = JsonConvert.SerializeObject(blocks) }; await _WS.SendAsync(new ArraySegment <byte>(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(messageresult))), WebSocketMessageType.Text, true, CancellationTokenSource.Token); break; } #endregion #region 登录 case Enums.MessageType.Login: { var messageresult = await Task.Factory.StartNew <Messages.MessageBaseResponse>(async() => { var param = JsonConvert.DeserializeObject <Messages.Login>(msgbase.Params); if (_user != null) { return new Messages.MessageBaseResponse() { Code = -1, Msg = "您已经登录过了!" } } ; //首先在redis里查询 _user = await _Redis.HashGetAsync <Modules.Users>("Users", param.Token); if (_user == null) { return new Messages.MessageBaseResponse() { Code = -1, Msg = "无效的Token!" } } ; _user = await _MapAccessQueue.AddTaskAsync2(Login, param); return(new Messages.MessageBaseResponse() { Code = 0, Msg = "登录成功!" }); }); await _WS.SendAsync(new ArraySegment <byte>(Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(messageresult))), WebSocketMessageType.Text, true, CancellationTokenSource.Token); break; } #endregion default: //默认 break; } } //End While }