MVC登入ajax驗證 隨筆記錄

來源:互聯網
上載者:User

近期項目使用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", form["username"], -14400);            }            return RedirectToAction("Index", "Home");        }

這裡放了一個checkbox 用於儲存使用者名稱的,然後提交到首頁的控制器,

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.