[C#] 纯文本查看 复制代码
/// <summary>
/// 登录按钮的事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void butLogin_Click(object sender, ImageClickEventArgs e)
{
//获取验证码对象
//--验证码一般存储在Session会话中,因为Session是有有效时间的,因此超过指定的生命期,Session就会自己消失
//--判断Session是否为空可以判定Session是否过期
var checkCode =
SessionFunction.GetInstance()
.GetSession(SystemConfigValue.GetInstance().SessionCheckImageCode);
//验证码过期的处理方式
//--当Session过期会使的存储的验证码被自动回收,此时对象应为null
//--当验证码过期后,应该停止页面其他响应,给出友好的提示
if (Equals(checkCode, null))
{
MessageBox.GetInstance().Alert(Page, txtCheckCode, "验证码过期", "当前页面验证码已过期,请重新载入!");
return;
}
//验证码输入错误的处理方式
//--判断服务器存储的验证码是否和输入的验证码相同,如果不同应该终止后续页面响应并给出友好的提示
//--可以使用ToLower()方法将字符串变成小写,如果严格区分大小写,请取消ToLower()方法的使用
if (!string.Equals(checkCode.ToString().ToLower(), txtCheckCode.Text.Trim().ToLower()))
{
MessageBox.GetInstance().Alert(Page, txtCheckCode, "验证码输入错误", "验证码输入错误,请重新输入!");
return;
}
//登录账户输入不能为空
//--判定用户账户是否为空,为空则停止页面响应,给出友好的提示信息
//--判定登录账户的用户名是否为空需要注意过滤空格,通常空格也是有效字符,但是作为实际使用是不合理的,需要清除
//--清除字符两端的空格通常使用Trim()方法
if (string.Equals(txtLoginName.Text.Trim(), string.Empty))
{
MessageBox.GetInstance().Alert(Page, txtLoginName, "登录账户输入错误", "登录账户名不能为空,请输入!");
return;
}
//登录密码输入不能为空
//--判定用户的登录密码是否为空,为空则停止页面响应并给出友好的提示
//--系统判断用户密码应该注意过滤空格,空格也是有效字符,但是一半不准采用空格作为密码存储
//--清除字符两端的空格通常使用Trim()方法
if (string.Equals(txtloginPwd.Text.Trim(), string.Empty))
{
MessageBox.GetInstance().Alert(Page, txtLoginName, "登录密码输入错误", "登录密码不能为空,请输入!");
return;
}
//获取用户名,注意清楚空格
var loginName = txtLoginName.Text.Trim();
//获取用户密码并进行md5加密处理,加密采用32位加密方式处理
//EncryptString.EncryptType类提供了8位,16位,和32位加密算法
var loginPwd = EncryptString.GetInstance()
.Md5String(txtloginPwd.Text.Trim(), EncryptString.EncryptType.ThrityTwo);
//根据用户名和密码从数据库中获取用户的实体数据,不存在用户数据,实体则为空
var userEntity = SysUser.GetInstance().GetEntity(loginName, loginPwd);
//判断数据库中是否存在用户
if (!Equals(null, userEntity))
{
//虽然登录成功,但是不一定分配了角色,需要进行判断
//获取当前用户的权限集合
var userPermissionList = CheckPower.GetInstance().GetUserPermission(userEntity.UserCode);
if (!( userPermissionList.Count > 0 ))
{
//注销Cookie,撤销用户登录状态
CookieFunction.GetInstance().QuitCookie();
//给出友好的提示信息,并终止页面的其他响应
MessageBox.GetInstance().Alert(Page, txtLoginName, "登录错误提示信息", "当前用户未启用任何系统角色,系统禁止用户登录");
return;
}
//将用户登录票据加密后存入cookies,如果存入失败则终止操作
if (!CookieFunction.GetInstance()
.InsertCookie(userEntity.UserCode, userEntity.LoginName,
int.Parse(SystemConfigValue.GetInstance().SessionOffTime)))
return;
//缓存用户的权限和菜单设置
if (!CacheUserPermission(userPermissionList, userEntity.UserCode))
{
//缓存用户数据的过程发生错误,给出友好的提示信息
MessageBox.GetInstance().Alert(Page, txtLoginName, "登录错误提示信息", "系统缓存用户数据过程发生错误,请联系管理员或重新登录");
return;
}
//存入系统后台登录日志
var logEntity = new Entity.SysLogInfo
{
CreateTime = DateTime.Now,
FromIpAddress = StringFunction.GetInstance().GetIpAddress(),
FromUrl = StringFunction.GetInstance().GetUrlAddress(),
LogCode = StringFunction.GetInstance().GetGuidString(),
LogContent = userEntity.LoginName + " 成功登录系统",
LogType = SystemLogType.LoginText,
PageCode = "",
UserCode = userEntity.UserCode,
ApplicationCode = "",
ModuleCode = ""
};
//登记系统日之后,转入系统的受页面
//这里可以人性化的存储用户的首页面,以便定制用户的操作习惯
if (SysLogInfo.GetInstance().Insert(logEntity))
{
Response.Redirect("Default.aspx?random=" + StringFunction.GetInstance().GetGuidString());
}
else
{
//插入日志异常,系统给与友好的提示信息
MessageBox.GetInstance().Alert(Page, txtLoginName, "登录错误提示信息", "当前系统异常,请稍后尝试重新登录!");
}
}
else
{
//不存在用户,提示错误信息
MessageBox.GetInstance().Alert(Page, txtLoginName, "登录错误提示信息", "您的用户名或者密码错误");
}
}