十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
客户端登陆界面如下:
成都创新互联2013年至今,是专业互联网技术服务公司,拥有项目成都网站制作、成都网站设计、外贸营销网站建设网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元江夏做网站,已为上家服务,为江夏各地企业和个人服务,联系电话:028-86922220

客户端代码:

Program.cs 中 NetworkComms.IgnoreUnknownPacketTypes = = ConnectionInfo(, = MainForm mainForm = frmLogin loginForm = (loginForm.ShowDialog() ==(loginForm.Register == =

登陆窗口中的登陆按钮相关代码

private void btnLogin_Click(object sender, EventArgs e)
{ // 如果通过输入验证
if (UserInputCheck())
{ try
{ // 保存登录身份是否合法验证结果
bool isPass = false;
Users theUser = new Users();
theUser.UserID = txtLoginName.Text.Trim();
theUser.Password = txtUserPwd.Text.Trim();
//发送当前登陆用户的信息给服务器,并从服务器获取返回的信息
LoginResult loginResult = newTcpConnection.SendReceiveObject("Login", "LoginResult", 5000, theUser);
if (loginResult.Message=="登录成功")
{ //记录用户名
netConfiguration.UserID = theUser.UserID;
netConfiguration.Save(); //初始化主窗口中的属性
theUser.Department = loginResult.Department;
theUser.Name = loginResult.UserName;
mainForm.InitiaLize(this.newTcpConnection, theUser);
// 标识验证通过
isPass = true;
Register = 5; this.DialogResult = DialogResult.OK;
} // 如果未通过验证
if (!isPass)
{
MessageBox.Show(loginResult.Message);
}
} catch (Exception ex)
{
ShowLoginLostToolTip(ex);
}
}
} 
User.cs实体类代码:
Users实体类,支持Protobuf.net序列化
服务器端程序的处理代码:
在服务器端构造函数中声明针对登陆操作的处理器:
//用户验证处理器 NetworkComms.AppendGlobalIncomingPacketHandler("Login", HandleUserVerify);

//用户登录验证
private void HandleUserVerify(PacketHeader header, Connection connection, Users theUser)
{
LoginResult loginResult = new LoginResult();
Users currentUser = DoUsers.GetUserByID(theUser.UserID); string message; if (currentUser != null)
{ if (currentUser.Password == theUser.Password)
message = "登录成功"; else if (currentUser.Password == "msdcmsdcmsdcmsdcmsdc")
message = "用户未开通,请与管理员联系"; else if (currentUser.Password != theUser.Password)
message = "用户名密码不匹配"; else
message = "登录不成功,原因未知";
} else
{
message = "用户不存在";
}
loginResult.Message = message;
loginResult.Department = currentUser.Department;
loginResult.UserName = currentUser.Name;
connection.SendObject("LoginResult", loginResult);
}
LoginResult契约类
DoUsers类中相关方法

public static Users GetUserByID(string userID)
{ using (IDataReader reader = DBUsers.GetOneByUserID(userID))
{
Users theUser = PopulateFromReader(reader); return theUser;
}
}

private static Users PopulateFromReader(IDataReader reader)
{
Users Users = new Users(); if (reader.Read())
{
Users.Id = Convert.ToInt32(reader["Id"]);
Users.UserID = reader["UserID"].ToString();
Users.Name = reader["Name"].ToString();
Users.Password = reader["Password"].ToString();
Users.Declaring = reader["Declaring"].ToString();
Users.Status = Convert.ToInt32(reader["Status"]);
Users.IsMale = Convert.ToBoolean(reader["IsMale"]);
Users.UserLevel = Convert.ToInt32(reader["UserLevel"]);
Users.Enabled = Convert.ToBoolean(reader["Enabled"]);
Users.RegisterTime = Convert.ToDateTime(reader["RegisterTime"]);
Users.LastLoginTime = Convert.ToDateTime(reader["LastLoginTime"]);
Users.DepID = Convert.ToInt32(reader["DepID"]);
Users.Department = reader["Department"].ToString();
} return Users;
}
DBUsers类中相关方法

//根据UserID获取记录
public static IDataReader GetOneByUserID(string userID)
{
SqlParameterHelper sph = new SqlParameterHelper(GetReadConnectionString(), "Users_SelectOneByUserID", 1);
sph.DefineSqlParameter("@UserID", SqlDbType.NVarChar, 200, ParameterDirection.Input, userID); return sph.ExecuteReader();
}
数据库中相关的存储过程

CREATE PROCEDURE [dbo].Users_SelectOneByUserID @UserID nvarchar(100) AS SELECT [Id], [UserID], [Name], [Password], [Declaring], [Status], [IsMale], [UserLevel], [Enabled], [RegisterTime], [LastLoginTime], [DepID], [Department] FROM [dbo].[Users] WHERE UserID=@UserID
