一开始发现没有多少人关注,就没在更新。
本人非美工出身,主要是注重功能,所以登录页比较简单。没有复杂的验证
登录按钮事件的后台处理:
private void btn_login_Click(object sender, EventArgs e)
{
try
{
var user = user_bll.UserLogin(txt_User_Account.Text, txt_UserPwd.Text);
if (user != null)
{
this.BeginInvoke(new ThreadStart(delay));
loginUserName = user.User_Name;
LoginUserID = user.User_ID;
LocalIP = GetLocalIP();
FrmMain main = new FrmMain();
main.WindowState = FormWindowState.Maximized;
main.Show();
LogHelper.WriteLog(typeof(FrmLogin), loginUserName + "登录成功!");
System_Bll.WriteLogToDB(
new Entity.Base_Log
{
CreateUserID = FrmLogin.LoginUserID,
CreateUserName = FrmLogin.loginUserName,
LocalIP = FrmLogin.LocalIP,
LogMessage = "登录成功!",
Type = "系统消息",
ClassName = typeof(FrmLogin).ToString()
});
}
}
catch (Exception ex)
{
MessageBox.Show (ex.Message);
}
}
调用业务逻辑层,需要对用户输入的密码做个MD5加密,然后上数据库中匹配
/// <summary>
/// 后台登陆验证
/// </summary>
/// <param name="name">账户</param>
/// <param name="pwd">密码</param>
/// <returns></returns>
public Base_UserInfo UserLogin(string name, string pwd)
{
try
{
var password = Md5Helper.Md5(pwd);
return user_dal.UserLogin(name, password);
}
catch (Exception ex)
{
throw ex;
}
}
数据处理层用到的数据库是利用EF的 database frist 模式 ,不懂EF 的同学可自行百度查询下。这里我为了方便是用的lINQ查询,做复杂验证的同学可以自己拼SQL 也是可以的。
/// <summary>
/// 后台登陆验证
/// </summary>
/// <param name="name">账户</param>
/// <param name="pwd">密码</param>
/// <returns></returns>
public Base_UserInfo UserLogin(string name, string pwd)
{
try
{
using (Sam_DBEntities db = new Sam_DBEntities())
{
// var password = Md5Helper.Md5(pwd);
return db.Base_UserInfo.Where(o => o.User_Account == name && o.User_Pwd == pwd).FirstOrDefault();
}
}
catch (Exception ex)
{
throw ex;
}
}