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表单中需要写明οnsubmit="return loginValidate()" 或者submit按钮提交时 οnclick="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", form["username"], -14400);
            }
            return RedirectToAction("Index", "Home");
        }

这里放了一个checkbox 用于保存用户名的,然后提交到主页的控制器,

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值