瀏覽代碼

修改了用户验证部分的代码

Client
WIN-G7N5C0B818G\Administrator 4 年之前
父節點
當前提交
6aca37fce4
共有 8 個文件被更改,包括 283 次插入138 次删除
  1. +75
    -30
      StuMgmClient/ClientConnect.cs
  2. +44
    -0
      StuMgmClient/Data.cs
  3. +81
    -78
      StuMgmClient/LoginForm.cs
  4. +18
    -16
      StuMgmClient/LoginForm.designer.cs
  5. +0
    -6
      StuMgmClient/LoginForm.resx
  6. +1
    -0
      StuMgmClient/StuMgmClient.csproj
  7. +45
    -0
      StuMgmClient/Utility.cs
  8. +19
    -8
      StuMgmLib/MyNameSpace/StuMgmSer.cs

+ 75
- 30
StuMgmClient/ClientConnect.cs 查看文件

@@ -1,54 +1,99 @@
using System;
using System.IO;
using System.Diagnostics;
using System.Net;
using System.Net.Sockets;
using System.Runtime.Serialization.Formatters.Binary;
using StuMgmLib.MyNameSpace;

namespace StuMgmClient
{
class ClientConnect
class Comm
{
//连接
public static Socket Connect(string ip, int port)
#region 基本函数
const int bufSize = 1024 * 1024;
static IPEndPoint m_ipEndpoint;
static Socket m_socket;
static byte[] m_buf;
void Init(string ip,int port)
{
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress ipAdress = IPAddress.Parse(ip);
IPEndPoint ipEndpoint = new IPEndPoint(ipAdress, port);
m_ipEndpoint = new IPEndPoint(ipAdress, port);
m_buf = new byte[bufSize];
}
void Connect()
{
try
{
client.Connect(ipEndpoint);
m_socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
m_socket.Connect(m_ipEndpoint);
}
catch (Exception ex)
{
return null;
Debug.Print(ex.Message);
}
}
bool Send(byte[] data)
{
try
{
m_socket.Send(data);
return true;
}
catch(Exception e)
{
Debug.Print(e.Message);
return false;
}
}
bool Receive()
{
try
{
Array.Clear(m_buf, 0, m_buf.Length);
m_socket.Receive(m_buf);
return true;
}
catch (Exception e)
{
Debug.Print(e.Message);
return false;
}
return client;
}
//发送并进行序列化
public static void Send(Socket client)
void DisConnect()
{
MemoryStream ms = new MemoryStream();
BinaryFormatter iFormatter = new BinaryFormatter();
Info.ClientSend cs = new Info.ClientSend();
cs.account= 1943;
cs.password = "1";
iFormatter.Serialize(ms, cs);
byte[] buff = ms.GetBuffer();
//发送消息到服务端
client.Send(buff);
client.Close();
}
//接收并进行反序列化
public static Info.ServerSend Receive(Socket client)
#endregion

internal ErrCode VerifLogin(string userName,string pawssword,out Roles role)
{
byte[] buffer = new byte[1024 * 1024];
client.Receive(buffer);
MemoryStream ms = new MemoryStream(buffer);
BinaryFormatter iFormatter = new BinaryFormatter();
Info.ServerSend serverSend = (Info.ServerSend)iFormatter.Deserialize(ms);
return serverSend;
role = Roles.Error;
Connect();
UserInfo cs = new UserInfo(userName,pawssword);
byte[] sendBuf;
if(Utility.BinSerialize(cs,out sendBuf ))
return ErrCode.FailSerial;
if (Send(sendBuf))
return ErrCode.FailSend;
if (Receive())
return ErrCode.FailReceive;
object o;
if (Utility.BinDeserialize(m_buf, out o))
return ErrCode.FailDeserial;
if (!(o is UserInfo))
return ErrCode.ErrData;
DisConnect();
role = ((UserInfo)o).UserRole;
return ErrCode.Success;
}








}
}


+ 44
- 0
StuMgmClient/Data.cs 查看文件

@@ -2,8 +2,20 @@
using System.Collections.Generic;
using System.Data;



namespace StuMgmClient
{
enum ErrCode
{
Success,
FailSerial,
FailDeserial,
FailSend,
FailReceive,
ErrData,
}

public enum Roles
{
NotFound = -1,
@@ -12,6 +24,38 @@ namespace StuMgmClient
Teacher = 2,
Student = 3,
}

[Serializable]
public class UserInfo
{
public string Account;
public string Password;
public Roles UserRole;
public UserInfo(string account, string password)
{
Account = account;
Password = password;
}
}





[Serializable]
public class ServerSend
{
public short permission { get; set; }
public DataSet ds { get; set; }
}


}


namespace StuMgmClient
{

class Data
{
//状态值字符串转字典


+ 81
- 78
StuMgmClient/LoginForm.cs 查看文件

@@ -1,10 +1,6 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Net.Sockets;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using StuMgmLib.MyNameSpace;
@@ -13,94 +9,101 @@ namespace StuMgmClient
{
public partial class LoginForm : Form
{
public static LoginForm login;
public LoginForm()
{
InitializeComponent();
}
string userName = "";
string pawssWord = "";
DataSet ds = null;

//DataSet ds = null;

////账号密码正则校验
//public bool RegexUser(string u, string p)
//{
// var regex = new Regex("^(?![0-9]+$)(?![a-zA-Z]+$)(?![a-z!@#$]+$)(?![A-Z!@#$]+$)(?![\\d!@#$]+$)^[a-zA-Z\\d!@#$]{5,20}$");
// //校验密码是否符合
// bool resultU = regex.IsMatch(u);
// bool resultP = regex.IsMatch(p);
// if (resultU == true && resultP == true)
// {
// return true;
// }
// else
// {
// return false;
// }
//}




private void chkPassWord_CheckedChanged(object sender, EventArgs e)
{

}

private void labForgetPassword_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{

}
private void btnSubmit_Click(object sender, EventArgs e)
{
Login();
}

//登陆方法
public void Login()
{
userName = txtUserName.Text;
pawssWord = txtPassWord.Text;

//if (!RegexUser(userName, pawssWord))
//{
// MessageBox.Show("用户名和密码必须包含数字,小写或大写,5到20位", "提示");
// return;
//}
string userName = txtUserName.Text;
string pawssword = txtPassWord.Text;
Info.ServerSend ss = ConnectServer();
//权限管理
int powerNum = (int)ss.permission;
ds = ss.ds;
switch (powerNum)
{
case (int)Roles.Student:
StudentForm stu = new StudentForm(ds);
stu.Show();
login.Hide();
break;
case (int)Roles.Teacher:
TeacherForm tf = new TeacherForm(ds);
tf.Show();
login.Hide();
break;
case (int)Roles.Admin:
AdminForm af = new AdminForm();
af.Show();
login.Hide();
break;
case (Int32)Roles.NotFound:
MessageBox.Show("账号或用户名错误", "提示");
break;
}

}
//账号密码正则校验
public bool RegexUser(string u, string p)
{
var regex = new Regex("^(?![0-9]+$)(?![a-zA-Z]+$)(?![a-z!@#$]+$)(?![A-Z!@#$]+$)(?![\\d!@#$]+$)^[a-zA-Z\\d!@#$]{5,20}$");
//校验密码是否符合
bool resultU = regex.IsMatch(u);
bool resultP = regex.IsMatch(p);
if (resultU == true && resultP == true)
{
return true;
}
else
{
return false;
}
}
//登陆连接服务器
public Info.ServerSend ConnectServer()
{
Socket client= ClientConnect.Connect("10.10.0.44", 502);
if (client== null)
{
MessageBox.Show("连接失败", "提示");
return null;
}
else
{
ClientConnect.Send(client);
Info.ServerSend ss = ClientConnect.Receive(client);
return ss;
}
}
//窗体加载
private void LoginForm_Load(object sender, EventArgs e)
{
login = this;
}

////权限管理
// int powerNum = (int)ss.permission;
// ds = ss.ds;
// switch (powerNum)
// {
// case (int)Roles.Student:
// StudentForm stu = new StudentForm(ds);
// stu.Show();
// login.Hide();
// break;
// case (int)Roles.Teacher:
// TeacherForm tf = new TeacherForm(ds);
// tf.Show();
// login.Hide();
// break;
// case (int)Roles.Admin:
// AdminForm af = new AdminForm();
// af.Show();
// login.Hide();
// break;
// case (Int32)Roles.NotFound:
// MessageBox.Show("账号或用户名错误", "提示");
// break;
// }


////登陆连接服务器
//public Info.ServerSend ConnectServer()
//{
// Socket client= ClientConnect.Connect("10.10.0.44", 502);
// if (client== null)
// {
// MessageBox.Show("连接失败", "提示");
// return null;
// }
// else
// {
// ClientConnect.Send(client);
// Info.ServerSend ss = ClientConnect.Receive(client);
// return ss;
// }
//}
}
}

+ 18
- 16
StuMgmClient/LoginForm.designer.cs 查看文件

@@ -31,7 +31,7 @@
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginForm));
this.toolTip1 = new System.Windows.Forms.ToolTip(this.components);
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.labForgetPassword = new System.Windows.Forms.LinkLabel();
this.tableLayoutPanel2 = new System.Windows.Forms.TableLayoutPanel();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.lblHead = new System.Windows.Forms.Label();
@@ -60,19 +60,20 @@
//
this.toolTip1.IsBalloon = true;
//
// linkLabel1
//
this.linkLabel1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.linkLabel1.AutoSize = true;
this.linkLabel1.LinkColor = System.Drawing.Color.DodgerBlue;
this.linkLabel1.Location = new System.Drawing.Point(125, 12);
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.Size = new System.Drawing.Size(117, 15);
this.linkLabel1.TabIndex = 7;
this.linkLabel1.TabStop = true;
this.linkLabel1.Text = "忘记密码";
this.linkLabel1.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.toolTip1.SetToolTip(this.linkLabel1, "请联系教师!");
// labForgetPassword
//
this.labForgetPassword.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.labForgetPassword.AutoSize = true;
this.labForgetPassword.LinkColor = System.Drawing.Color.DodgerBlue;
this.labForgetPassword.Location = new System.Drawing.Point(125, 12);
this.labForgetPassword.Name = "labForgetPassword";
this.labForgetPassword.Size = new System.Drawing.Size(117, 15);
this.labForgetPassword.TabIndex = 7;
this.labForgetPassword.TabStop = true;
this.labForgetPassword.Text = "忘记密码";
this.labForgetPassword.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
this.toolTip1.SetToolTip(this.labForgetPassword, "请联系教师!");
this.labForgetPassword.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.labForgetPassword_LinkClicked);
//
// tableLayoutPanel2
//
@@ -240,7 +241,7 @@
this.tableLayoutPanel4.ColumnCount = 2;
this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel4.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
this.tableLayoutPanel4.Controls.Add(this.linkLabel1, 1, 0);
this.tableLayoutPanel4.Controls.Add(this.labForgetPassword, 1, 0);
this.tableLayoutPanel4.Controls.Add(this.chkPassWord, 0, 0);
this.tableLayoutPanel4.Location = new System.Drawing.Point(102, 165);
this.tableLayoutPanel4.Name = "tableLayoutPanel4";
@@ -259,6 +260,7 @@
this.chkPassWord.TabIndex = 6;
this.chkPassWord.Text = "记住密码";
this.chkPassWord.UseVisualStyleBackColor = true;
this.chkPassWord.CheckedChanged += new System.EventHandler(this.chkPassWord_CheckedChanged);
//
// LoginForm
//
@@ -309,7 +311,7 @@
private System.Windows.Forms.TextBox txtPassWord;
private System.Windows.Forms.PictureBox picPassWord;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel4;
private System.Windows.Forms.LinkLabel linkLabel1;
private System.Windows.Forms.LinkLabel labForgetPassword;
private System.Windows.Forms.CheckBox chkPassWord;

}


+ 0
- 6
StuMgmClient/LoginForm.resx 查看文件

@@ -123,9 +123,6 @@
<metadata name="txtUserName.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="txtUserName.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="picUserName.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
@@ -153,9 +150,6 @@
<metadata name="txtPassWord.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="txtPassWord.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<data name="picPassWord.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABGdBTUEAALGPC/xhBQAAA4BJREFUaEPV


+ 1
- 0
StuMgmClient/StuMgmClient.csproj 查看文件

@@ -91,6 +91,7 @@
<Compile Include="StudentNavigation.Designer.cs">
<DependentUpon>StudentNavigation.cs</DependentUpon>
</Compile>
<Compile Include="Utility.cs" />
<EmbeddedResource Include="SelectFrom.resx">
<DependentUpon>SelectFrom.cs</DependentUpon>
</EmbeddedResource>


+ 45
- 0
StuMgmClient/Utility.cs 查看文件

@@ -0,0 +1,45 @@
using System;
using System.Diagnostics;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;

namespace StuMgmClient
{
class Utility
{
internal static bool BinSerialize<T>(T data, out byte[] buff)
{
try
{
MemoryStream ms = new MemoryStream();
BinaryFormatter iFormatter = new BinaryFormatter();
iFormatter.Serialize(ms, data);
buff = ms.GetBuffer();
return true;
}
catch (Exception e)
{
Debug.Print(e.Message);
buff = null;
return false;
}
}

internal static bool BinDeserialize(byte[] data, out object o)
{
try
{
MemoryStream ms = new MemoryStream(data);
BinaryFormatter iFormatter = new BinaryFormatter();
o = iFormatter.Deserialize(ms);
return true;
}
catch (Exception e)
{
Debug.Print(e.Message);
o = null;
return false;
}
}
}
}

+ 19
- 8
StuMgmLib/MyNameSpace/StuMgmSer.cs 查看文件

@@ -4,22 +4,33 @@ using System.Data;

namespace StuMgmLib.MyNameSpace
{
public class Info
[Serializable]
public class UserInfo
{
[Serializable]
public class ClientSend
public string Account;
public string Password;
public UserInfo(string account,string password)
{
public short account { get; set; }
public string password { get; set; }
public string [] sqlStr { get; set; }
Account = account;
Password = password;
}
[Serializable]
}

[Serializable]
public class UserInfo
{
public short UserLevel;
}
[Serializable]
public class ServerSend
{
public short permission { get; set; }
public DataSet ds { get; set; }
}
}


}

Loading…
取消
儲存