近期项目使用MVC开发,首先遇到的登录问题,之前使用aspx开发 挺简单的一个功能,使用MVC便闲的无从下手了,目前问题已经解决,记录下来,经过想了半天决定借助ajax处理验证,验证通过后,直接进行提交跳转,jquery验证如下 ,需要引用jquery 组建就不说了。
function loginValidate() { var kk = true; $.ajax({ type: "POST",dataType: "text",url: "/Helpers/admin_ajax.ashx",cache: false,timeout: 10000,async: false,data: { sign: "CheckLogin",username: $("#username").val(),password: $("#password").val(),validatecode: $("#validateCode").val() },success: function (data) { if (data != "true") { $("#lblTip").show(); $("#lblTip").html(data); kk=false; } },error: function (data) { $("#lblTip").html("登录失败,请刷新页面重试"); kk=false; } }); return kk; }
login.cshtml页面有个地方需要主要 form表单中需要写明onsubmit="return loginValidate()" 或者submit按钮提交时 onclick="return loginValidate()" 以确保终止提交
admin_ajax.ashx处理如下,/// <summary> /// 登录验证 /// </summary> /// <param name="context"></param> /// <returns>true 通过验证</returns> private string loginValidate(HttpContext context) { string username = SysRequest.GetFormString("username"); string password = SysRequest.GetFormString("password"); string validateCode = SysRequest.GetFormString("validatecode"); if (context.Session[Keys.SESSION_CODE]==null) { return "验证码不存在,请切换验证码!"; } if (string.IsNullOrEmpty(username)) { return "请输入用户名"; } if (string.IsNullOrEmpty(password)) { return "请输入密码"; } if (string.IsNullOrEmpty(validateCode)) { return "请输入验证码"; } if (validateCode.ToLower()!=context.Session[Keys.SESSION_CODE].ToString().ToLower()) { return "验证码不正确,请重新输入"; } Dictionary<string,object> p = new Dictionary<string,object>(); p["LoginName"] = username; p["PassWord"] = Utils.Encrypt(password); P_manager item = sqlDbHelper.GetModel<P_manager>(p,sqlDbHelper.constr); if (item == null) { return "用户名或密码不正确,请重新输入"; } context.Session[Keys.SESSION_ADMIN_INFO] = item; //写入登录日志 Model.siteconfig siteConfig = ConfigCRUD.loadConfig<siteconfig>(Utils.GetXmlMapPath(Keys.FILE_SITE_XML_CONFING)); if (siteConfig.logstatus == 1) { P_manager_log logitem = new P_manager_log(); logitem.user_id = item.id; logitem.user_name = item.LoginName; logitem.action_type = "login"; logitem.note = "用户登录"; logitem.login_ip = SysRequest.GetIP(); logitem.login_time = DateTime.Now; sqlDbHelper.InsertModel<P_manager_log>(logitem,sqlDbHelper.constr); } if (item.RoleType > 1)//超级管理不判断权限 { string sql = "SELECT [ModuleName],[ModuleID],[FunctionDetails] FROM [p_FunctionModule_Role] where RoleID=" + item.RoleID; System.Data.DataTable dt = sqlDbHelper.sqlTextDataset(System.Data.CommandType.Text,sql,sqlDbHelper.constr).Tables[0]; if (dt.Rows.Count > 0) { string str = ""; for (int i = 0; i < dt.Rows.Count; i++) { if (i == dt.Rows.Count - 1) { str += dt.Rows[i]["ModuleName"].ToString() + ":" + dt.Rows[i]["ModuleID"].ToString() + ":" + dt.Rows[i]["FunctionDetails"].ToString(); } else { str += dt.Rows[i]["ModuleName"].ToString() + ":" + dt.Rows[i]["ModuleID"].ToString() + ":" + dt.Rows[i]["FunctionDetails"].ToString() + ","; } } context.Session["AdminRole"] = str; } } return "true"; }提交成功后的loginController代码如下:
[HttpPost] public ActionResult Login(FormCollection form) { string cbRememberId = Request.Form["cbRememberId"]; if (cbRememberId == "on") { Utils.WriteCookie("DTRememberName",form["username"],14400); } else { Utils.WriteCookie("DTRememberName",-14400); } return RedirectToAction("Index","Home"); }这里放了一个checkBox 用于保存用户名的,然后提交到主页的控制器,
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。