private void textBox1_Leave(object sender, EventArgs e) { if (textBox1.Text != "") { this.Enabled = false; lcr = Authentication.LoginCheck(textBox1.Text); if (lcr.success == false) { MessageBox.Show("Error: " + lcr.exception); Application.Exit(); } label3.Visible = textBox3.Visible = pictureBox1.Visible = lcr.needVCode; textBox3.Text = ""; if (lcr.needVCode) { pictureBox1.Image = ByteToImage(lcr.image); } this.Enabled = true; } }
public ActionResult PostLogin(FormCollection form) { string username = form["username"]; string password = form["password"]; bool isremember = Convert.ToBoolean(form["isremember"]); if (username == "" || password == "") { return(Json(new { Result = false, Message = "账号密码不能为空!" })); } //result success Failure LockedOut LoginCheckResult result = LoginCheck.PasswordSignIn(username, password, this.SetCustomerCookie); if (result == LoginCheckResult.Success) { Customer cus = this.CurrentCustomer; var userRole = cus.CustomerType;//getrolebyid HttpCookie userRoleCookie = new HttpCookie("Role"); switch (userRole) { case CustomerType.User: { userRoleCookie.Value = "User"; if (isremember) { //加上remember password HttpCookie rolelongCookie = Request.Cookies[".ASPXAUTH"]; rolelongCookie.Expires = DateTime.Now.AddDays(7); Response.Cookies.Add(rolelongCookie); userRoleCookie.Expires = DateTime.Now.AddDays(7); } Response.SetCookie(userRoleCookie); return(Json(new { Result = true, Message = "User" })); } case CustomerType.SuperAdmin: { userRoleCookie.Value = "SuperAdmin"; if (isremember) { //加上remember password HttpCookie rolelongCookie = Request.Cookies[".ASPXAUTH"]; rolelongCookie.Expires = DateTime.Now.AddDays(7); Response.Cookies.Add(rolelongCookie); userRoleCookie.Expires = DateTime.Now.AddDays(7); } Response.SetCookie(userRoleCookie); return(Json(new { Result = true, Message = "SuperAdmin" })); } case CustomerType.Admin: { userRoleCookie.Value = "Admin"; if (isremember) { //加上remember password HttpCookie rolelongCookie = Request.Cookies[".ASPXAUTH"]; rolelongCookie.Expires = DateTime.Now.AddDays(7); Response.Cookies.Add(rolelongCookie); userRoleCookie.Expires = DateTime.Now.AddDays(7); } Response.SetCookie(userRoleCookie); return(Json(new { Result = true, Message = "Admin" })); } default: throw new ArgumentNullException("Can not find user type by id"); } } else if (result == LoginCheckResult.LockedOut) { return(Json(new { Result = false, Message = "未经审核的用户或此账户已被冻结,请联系管理员!" })); } else if (result == LoginCheckResult.Failure) { return(Json(new { Result = false, Message = "用户名或密码错误" })); } else { return(Json(new { Result = false, Message = "some error happened when login" })); } }
/// <summary> /// Constructor. /// </summary> /// <param name="loggedIn">Login status.</param> public LoggedInEventArgs(LoginCheckResult result) { Result = result; }
/// <summary> /// Processes received packets. /// </summary> /// <param name="packet">Received packet.</param> void ProcessPacket(NetworkPacket packet) { // Decrypt data var data = packet.Data; if (data != null && data.Length > 0 && packet.PacketType != NetworkPacketType.PublicKey) { if (packet.PacketType != NetworkPacketType.ServerInfo) { data = _decrypter.Decrypt(packet.Data); } if (data == null) { Log.WriteLine(LogPriority.Error, "NetworkGameClient: Error! Could not decrypt message from server"); return; } } switch (packet.PacketType) { case NetworkPacketType.PublicKey: try { var serverPubKey = Encoding.ASCII.GetString(packet.Data); _encrypter = new CryptoHelper(serverPubKey); } catch (Exception ex) { _encrypter = null; Log.WriteLine(LogPriority.Error, "NetworkGameClient: Received key is invalid! " + ex.Message); } #pragma warning disable RECS0022 // A catch clause that catches System.Exception and has an empty body #pragma warning disable CC0004 // Catch block cannot be empty finally { try { _encrypterWaiter?.Cancel(); } catch { /* Ignore*/ } } #pragma warning restore CC0004 // Catch block cannot be empty #pragma warning restore RECS0022 // A catch clause that catches System.Exception and has an empty body break; case NetworkPacketType.ListGames: try { var glistString = Encoding.ASCII.GetString(data); var glist = JsonConvert.DeserializeObject <List <GameInfo> >(glistString); Log.WriteLine(LogPriority.Verbose, "NetworkGameClient: Received list of games on server. Game count: " + glist.Count); GameListReceived?.Invoke(this, new GameListEventArgs(glist)); } catch (Exception e) { Log.WriteLine(LogPriority.Error, "NetworkGameClient: Received list of games from server could not be read. " + e.Message); } break; case NetworkPacketType.ClientLogin: try { if (data.Length != 1 || data[0] > 4) { Log.WriteLine(LogPriority.Information, "NetworkGameClient: Received login confirmation could not be read: No data!"); break; } LoginCheckResult loginResult = (LoginCheckResult)(int)data[0]; if (loginResult == LoginCheckResult.LoginOK) { IsLoggedIn = true; Log.WriteLine(LogPriority.Information, "NetworkGameClient: Login to server successful!"); } else { IsLoggedIn = false; var error = "NetworkGameClient: Login to server failed! "; switch (loginResult) { case LoginCheckResult.InvalidUser: error += "Invalid user name"; break; case LoginCheckResult.InvalidPassword: error += "Invalid password"; break; case LoginCheckResult.DatabaseError: error += "Database error"; break; case LoginCheckResult.AuthorizationRequired: error += "Authorization required"; break; case LoginCheckResult.CreateAccountDenied: error += "Create account denied"; break; default: error += "Unknown error"; break; } Log.WriteLine(LogPriority.Information, error); } LoggedIn?.Invoke(this, new LoggedInEventArgs(loginResult)); } catch (Exception e) { Log.WriteLine(LogPriority.Error, "NetworkGameClient: Received login confirmation could not be read." + e.Message); } break; case NetworkPacketType.CreateGame: try { // Check if an UID was assigned var ginfo = JsonConvert.DeserializeObject <GameInfo>(Encoding.ASCII.GetString(data)); if (ginfo != null) { if (ginfo.UID != 0) { GameCreated?.Invoke(this, new GameCreatedEventArgs(ginfo)); } } else { Log.WriteLine(LogPriority.Error, "NetworkGameClient: Received CreateGame confirmation could not be read."); } } catch (Exception e) { Log.WriteLine(LogPriority.Error, "NetworkGameClient: Received CreateGame confirmation could not be read." + e.Message); } break; case NetworkPacketType.JoinGame: try { var jMsg = JsonConvert.DeserializeObject <JoinMessage>(Encoding.ASCII.GetString(data)); if (jMsg != null) { GameJoinRequested?.Invoke(this, new GameJoinRequestedEventArgs(jMsg)); // If joining and other side declined then set IsJoined to false if (jMsg.Request == JoinRequestType.Decline) { IsJoined = false; } } } catch (Exception e) { Log.WriteLine(LogPriority.Error, "NetworkGameClient: Received JoinGame confirmation could not be read." + e.Message); } break; case NetworkPacketType.ServerInfo: try { // Server data is always unencrypted var jMsg = JsonConvert.DeserializeObject <ServerInfo>(Encoding.ASCII.GetString(packet.Data)); if (jMsg != null) { ServerRequiresLogin = jMsg.RequiresLogin; ServerInfoReceived?.Invoke(this, new ServerInfoEventArgs(jMsg)); } } catch (Exception e) { Log.WriteLine(LogPriority.Error, "NetworkGameClient: Received ServerInfo could not be read." + e.Message); } break; case NetworkPacketType.ExitGame: try { var eMsg = JsonConvert.DeserializeObject <ExitGame>(Encoding.ASCII.GetString(data)); if (eMsg != null) { if (eMsg.UID == UID) { IsJoined = false; UID = 0; GameExitReceived?.Invoke(this, new ExitGameEventArgs(eMsg.Reason)); } } } catch (Exception e) { Log.WriteLine(LogPriority.Error, "NetworkGameClient: Received ExitGame message could not be read." + e.Message); } break; case NetworkPacketType.GameSync: try { var eMsg = JsonConvert.DeserializeObject <GameSync>(Encoding.ASCII.GetString(data)); if (eMsg != null && eMsg.UID == UID) { GameSyncReceived?.Invoke(this, new GameSyncEventArgs(eMsg)); } } catch (Exception e) { Log.WriteLine(LogPriority.Error, "NetworkGameClient: Received GameSync message could not be read." + e.Message); } break; case NetworkPacketType.GameCommand: try { var eMsg = JsonConvert.DeserializeObject <GameCommand>(Encoding.ASCII.GetString(data)); if (eMsg != null) { GameCommandReceived?.Invoke(this, new GameCommandEventArgs(eMsg)); } } catch (Exception e) { Log.WriteLine(LogPriority.Error, "NetworkGameClient: Received GameSync message could not be read." + e.Message); } break; default: Log.WriteLine(LogPriority.Error, "NetworkGameClient: Packet type " + packet.PacketType + " not recognized!"); break; } }