标签:
客户端登陆界面如下:
客户端代码:
Program.cs 中
//在全局处理函数中忽略相关消息 不添加日志 NetworkComms.IgnoreUnknownPacketTypes = true; ConnectionInfo connInfo = new ConnectionInfo("127.0.0.1", 2539); Connection newTcpConnection = TCPConnection.GetConnection(connInfo); //连接服务器完成****************************************** //初始化主窗口 MainForm mainForm = new MainForm(); //显示登录窗口 frmLogin loginForm = new frmLogin(applicationName, mainForm, newTcpConnection); //根据登陆窗口返回的信息,打开主窗口,或者是注册窗口 if (loginForm.ShowDialog() == DialogResult.OK) { if(loginForm.Register == 5) { Application.Run(mainForm); } else { Register newRegister = new Register(); newRegister.Initialize(newTcpConnection); Application.Run(newRegister); } }
登陆窗口中的登陆按钮相关代码
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<LoginResult>("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实体类代码:
[ProtoContract] public class Users { #region Constructors public Users() { } #endregion #region Private Properties private int id = -1; private string userID = string.Empty; private string name = string.Empty; private string password = string.Empty; private string declaring = string.Empty; private int status = -1; private bool isMale = false; private int userLevel = -1; private bool enabled = false; private DateTime registerTime = DateTime.UtcNow; private DateTime lastLoginTime = DateTime.UtcNow; private int depID = -1; private string department = string.Empty; #endregion #region Public Properties [ProtoMember(1)] public int Id { get { return id; } set { id = value; } } [ProtoMember(2)] public string UserID { get { return userID; } set { userID = value; } } [ProtoMember(3)] public string Name { get { return name; } set { name = value; } } [ProtoMember(4)] public string Password { get { return password; } set { password = value; } } [ProtoMember(5)] public string Declaring { get { return declaring; } set { declaring = value; } } [ProtoMember(6)] public int Status { get { return status; } set { status = value; } } [ProtoMember(7)] public bool IsMale { get { return isMale; } set { isMale = value; } } [ProtoMember(8)] public int UserLevel { get { return userLevel; } set { userLevel = value; } } [ProtoMember(9)] public bool Enabled { get { return enabled; } set { enabled = value; } } [ProtoMember(10)] public DateTime RegisterTime { get { return registerTime; } set { registerTime = value; } } [ProtoMember(11)] public DateTime LastLoginTime { get { return lastLoginTime; } set { lastLoginTime = value; } } [ProtoMember(12)] public int DepID { get { return depID; } set { depID = value; } } [ProtoMember(13)] public string Department { get { return department; } set { department = value; } } #endregion }
服务器端程序的处理代码:
在服务器端构造函数中声明针对登陆操作的处理器:
//用户验证处理器 NetworkComms.AppendGlobalIncomingPacketHandler<Users>("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); }
[ProtoContract] public class LoginResult { [ProtoMember(1)] public string Message { get; set; } [ProtoMember(2)] public string Department { get; set; } [ProtoMember(3)] public string UserName { get; set; } public LoginResult() { } public LoginResult(string message) { this.Message = message; } public LoginResult(string message,string department) { this.Message = message; this.Department = department; } public LoginResult(string message, string department,string userName) { this.Message = message; this.Department = department; this.UserName = userName; } }
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
标签:
原文地址:http://www.cnblogs.com/networkcomms/p/4279873.html