微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MVC登录ajax验证 随笔记录

近期项目使用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 举报,一经查实,本站将立刻删除。

相关推荐