public ActionResult Login()
{
#region 读取cookie中的数据 登录页面数据回填
string UserNuber = "";
string Password = "";
string UserTypeClass = "";
bool isRember = false;
//读取浏览器请求传递的cookie
HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies["user"];
if (cookie != null)//判断是否存在cookie
{
if (cookie["UserNuber"] != null)
{
UserNuber = HttpUtility.UrlDecode(cookie["UserNuber"], Encoding.GetEncoding("UTF-8"));
}
if (cookie["Password"] != null)
{
Password = System.Web.HttpContext.Current.Server.UrlDecode(cookie["UserTypeClass"]);
}
isRember = true;
}
#endregion
ViewBag.UserNuber = UserNuber;
ViewBag.Password = Password;
ViewBag.UserTypeClass = UserTypeClass;
ViewBag.isRember = isRember;
return View();
}
/// <summary>
/// 验证码生成
/// </summary>
/// <returns></returns>
public ActionResult ValidCode()
{
//生成一个随机字符串 验证码
string strRandom = ValidCodeUtils.GetRandomCode(5);
//将验证码存入Session会话
Session["validCode"] = strRandom;
//byte[] 根据验证码产生图片
byte[] imgByte = ValidCodeUtils.CreateImage(strRandom);
//返回图片信息
return File(imgByte, @"image/jpeg");
}
/// <summary>
/// 登录验证
/// </summary>
/// <returns></returns>
public ActionResult UserLogin()
{
ReturnJson msg = new ReturnJson();
//获取页面传递的数据
string strUserNuber = Request["UserNuber"].Trim();//用户名
string strPassword = Request["Password"].Trim();//密码
string strValidCode = Request["validCode"].Trim();//验证码
string strIsRember = Request["rememberMe"].Trim();//记住否
string strUserTypeClass = Request["UserTypeClass"].Trim();//用户类型id
//获取存放在Session中的验证码
string sessionValiCode = "";
try
{
sessionValiCode = Session["validCode"].ToString();
}
catch (Exception e)
{
Console.WriteLine(e);
msg.Text = "验证码丢失!请刷新验证码,重新登录验证";
return Json(msg, JsonRequestBehavior.AllowGet);
}
//判断填入的验证和session中的验证码是否一致
if (sessionValiCode.Equals(strValidCode.Trim(), StringComparison.InvariantCultureIgnoreCase))
{
try
{
PW_User dbUser = (from tbUser in myModel.PW_User
where tbUser.UserNuber == strUserNuber && tbUser.ToVoidNo == true
select tbUser).Single();//单条书据,当没有数据或者有多条数据时会触发异常
//将用户输入的密码进行AES265后与数据库中的密码对比
string password = AESEncryptHelper.Encrypt(strPassword);
if (dbUser.Password.Equals(password))
{
var listUserType = (from tbUser in myModel.PW_User
join tbUserRoleDetail in myModel.PW_UserRoleDetail on tbUser.UserID equals tbUserRoleDetail.UserID
join tbUserType in myModel.SYS_UserType on tbUserRoleDetail.UserTypeID equals tbUserType.UserTypeID
where tbUser.UserID == dbUser.UserID && tbUserType.typeClass == strUserTypeClass
select new
{
tbUserType.UserTypeID,
tbUserType.UserType
}).ToList();
if (listUserType.Count > 0)
{
//用户身份证验证完成 开始处理登录信息
//获取用户类型名称
Session["UserID"] = dbUser.UserID;// 传递 UserID
Session["UserTypeID"] = listUserType[0].UserTypeID;// 传递 UserTypeID
Session["ServerTime"] = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");//登录时间
Session["UserTypeClass"] = strUserTypeClass;//用户的类型 1-学生;2-教师;3-管理
//如果需要记住密码 strIsRember =="true "设置cookie
if (strIsRember == "true")
{
//记住密码 保存cookie
HttpCookie cookie = new HttpCookie("user");
cookie.Expires = DateTime.Now.AddDays(7);//保存7天
//HttpUtility 提供在处理 Web 请求时用于编码和解码 URL 的方法
//UrlEncode()使用指定的编码对象,对 URL 字符串进行编码
cookie["UserNuber"] = HttpUtility.UrlEncode(strUserNuber, Encoding.GetEncoding("UTF-8"));//用户名
cookie["Password"] = strPassword;//密码
cookie["UserTypeClass"] = strUserTypeClass;//用户类型
Response.Cookies.Add(cookie);
}
else
{
//删除cookie
HttpCookie cookie = new HttpCookie("user");
cookie.Expires = DateTime.Now.AddDays(-1);
Response.Cookies.Add(cookie);
}
msg.State = true;
msg.Text = "用户登录成功";
}
else
{
msg.Text = "用户类型错误";
}
}
else
{
msg.Text = "用户密码错误,请重新输入";
}
}
catch (Exception e)
{
Console.WriteLine(e);
msg.Text = "此用户不存在,请重新输入";
}
}
else
{
msg.Text = "验证码错误,请重新登录";
}
return Json(msg, JsonRequestBehavior.AllowGet);
}