录播教室预约系统(五)-用户登陆
客户端登陆界面如下:
客户端代码:
Program.cs中NetworkComms.IgnoreUnknownPacketTypes==ConnectionInfo(,=MainFormmainForm=frmLoginloginForm=(loginForm.ShowDialog()==(loginForm.Register===
登陆窗口中的登陆按钮相关代码
privatevoidbtnLogin_Click(objectsender,EventArgse){//如果通过输入验证if(UserInputCheck()){try{//保存登录身份是否合法验证结果boolisPass=false;UserstheUser=newUsers();theUser.UserID=txtLoginName.Text.Trim();theUser.Password=txtUserPwd.Text.Trim();//发送当前登陆用户的信息给服务器,并从服务器获取返回的信息LoginResultloginResult=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(Exceptionex){ShowLoginLostToolTip(ex);}}}
User.cs实体类代码:
Users实体类,支持Protobuf.net序列化
服务器端程序的处理代码:
在服务器端构造函数中声明针对登陆操作的处理器:
//用户验证处理器NetworkComms.AppendGlobalIncomingPacketHandler<Users>("Login",HandleUserVerify);
//用户登录验证privatevoidHandleUserVerify(PacketHeaderheader,Connectionconnection,UserstheUser){LoginResultloginResult=newLoginResult();UserscurrentUser=DoUsers.GetUserByID(theUser.UserID);stringmessage;if(currentUser!=null){if(currentUser.Password==theUser.Password)message="登录成功";elseif(currentUser.Password=="msdcmsdcmsdcmsdcmsdc")message="用户未开通,请与管理员联系";elseif(currentUser.Password!=theUser.Password)message="用户名密码不匹配";elsemessage="登录不成功,原因未知";}else{message="用户不存在";}loginResult.Message=message;loginResult.Department=currentUser.Department;loginResult.UserName=currentUser.Name;connection.SendObject("LoginResult",loginResult);}
LoginResult契约类
DoUsers类中相关方法
publicstaticUsersGetUserByID(stringuserID){using(IDataReaderreader=DBUsers.GetOneByUserID(userID)){UserstheUser=PopulateFromReader(reader);returntheUser;}}
privatestaticUsersPopulateFromReader(IDataReaderreader){UsersUsers=newUsers();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();}returnUsers;}
DBUsers类中相关方法
//根据UserID获取记录publicstaticIDataReaderGetOneByUserID(stringuserID){SqlParameterHelpersph=newSqlParameterHelper(GetReadConnectionString(),"Users_SelectOneByUserID",1);sph.DefineSqlParameter("@UserID",SqlDbType.NVarChar,200,ParameterDirection.Input,userID);returnsph.ExecuteReader();}
数据库中相关的存储过程
CREATEPROCEDURE[dbo].Users_SelectOneByUserID@UserIDnvarchar(100)ASSELECT[Id],[UserID],[Name],[Password],[Declaring],[Status],[IsMale],[UserLevel],[Enabled],[RegisterTime],[LastLoginTime],[DepID],[Department]FROM[dbo].[Users]WHEREUserID=@UserID
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。