[实战]MVC5+EF6+MySql企业网盘实战(6)——ajax方式登录
写在前面
今天回来的比较早,就趁着有空,把登录的代码更新一下。上篇文章实现了ajax的注册,这篇将实现登录,实现目标,ajax登录方式,如果勾选记住我,则下次不再输入用户名密码,直接跳转到网盘界面。
系列文章
[EF]vs15+ef6+mysql code first方式
[实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册
[实战]MVC5+EF6+MySql企业网盘实战(3)——验证码
[实战]MVC5+EF6+MySql企业网盘实战(4)——上传头像
[实战]MVC5+EF6+MySql企业网盘实战(5)——登录界面,头像等比例压缩
[实战]MVC5+EF6+MySql企业网盘实战(5)——页面模板
[实战]MVC5+EF6+MySql企业网盘实战(5)——ajax方式注册
[实战]MVC5+EF6+MySql企业网盘实战(6)——ajax方式登录
代码

@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content="企业,网盘,企业网盘"> <meta name="author" content="Muhammad Usman"> <title>登录</title> <script src="~/Scripts/jquery-1.10.2.min.js"></script> <link href="~/Content/Css/bootstrap-cerulean.min.css" rel="stylesheet" /> <link href="~/Content/Css/charisma-app.css" rel="stylesheet" /> <link href="~/Content/Css/jquery.noty.css" rel="stylesheet" /> <link href="~/Content/Css/elfinder.min.css" rel="stylesheet" /> <link href="~/Content/Css/elfinder.theme.css" rel="stylesheet" /> <link href="~/Content/Css/jquery.iphone.toggle.css" rel="stylesheet" /> <link href="~/Content/Css/animate.min.css" rel="stylesheet" /> <script> $(function () { //多选框 $("#chkRemember").click(function () { if (!$(this).attr("checked")) { $(this).attr("checked", 'checked'); } else { $(this).removeAttr("checked"); }; }); //为登录按钮注册单击事件 $('#btnLogin').click(function () { $.ajax({ type: "post", url: "/UserInfo/Login", data: { userName: $("#txtUserName").val(), pwd: $("#txtPwd").val(), remember: $("#chkRemember").attr('checked') }, dataType: "json", success: function (data) { console.log(data); data = JSON.parse(data); if (data.code == 200) { } else { $("#loginMsg").html("<span style='color:red;'>"+data.msg+"</span>"); }; }, error: function (msg) { alert(data); } }); }); }); </script> </head> <body> <div class="row"> <div class="row"> <div class="col-md-12 center login-header"> <h2>欢迎使用 Wolfy企业网盘</h2> </div> <!--/span--> </div><!--/row--> <div class="container"> <div class="row"> <div class="well col-md-5 center login-box"> <div class="alert alert-info" id="loginMsg"> 请使用用户名和密码登录 </div> <fieldset> <div class="input-group input-group-lg"> <span class="input-group-addon"><i class="glyphicon glyphicon-user red"></i></span> <input type="text" class="form-control" id="txtUserName" placeholder="用户名"> </div> <div class="clearfix"></div><br> <div class="input-group input-group-lg"> <span class="input-group-addon"><i class="glyphicon glyphicon-lock red"></i></span> <input type="password" class="form-control" id="txtPwd" placeholder="密码"> </div> <div class="clearfix"></div> <div class="input-prepend"> <label class="remember" for="chkRemember"><input type="checkbox" name="chkRemember" id="chkRemember" value="1" /> 记住我</label> </div> <div class="clearfix"></div> <p class="center col-md-5"> <button type="button" class="btn btn-primary" id="btnLogin">登录</button> </p><a href="/UserInfo/Register" class="right" style="float:right;">注册</a> </fieldset> </div> <!--/span--> </div><!--/row--> </div><!--/fluid-row--> </div> </body> </html>
目前还是使用session来保持状态,使用在action上加特性的方式,留待以后优化。
[HttpGet] public ActionResult Login() { UserInfo userInfo = null; if (Request.Cookies["n"] != null && Request.Cookies["p"] != null) { string userName = Request.Cookies["n"].Value; string pwd = Request.Cookies["p"].Value; userInfo = _userInfoServiceRepository.Find(x => x.UserName == userName && x.Pwd == pwd); if (userInfo!=null) { if (Session["user"] == null) { Session["user"] = userInfo; } //更新最后一次登录时间 userInfo.LoginDt = DateTime.Now; _userInfoServiceRepository.Update(userInfo); _userInfoServiceRepository.SaveChanges(); } } return View(); } /// <summary> /// 登录 /// </summary> /// <param name="userName"></param> /// <param name="code"></param> /// <returns></returns> [HttpPost] public JsonResult Login(string userName, string pwd, string remember) { if (!_userInfoServiceRepository.Exist(userName)) { return new JsonResult() { Data = "{\"code\":500,\"msg\":\"用户名不存在\"}" }; } if (!string.IsNullOrEmpty(pwd)) { pwd = MD5Helper.GetMD5FromString(pwd); } else { return new JsonResult() { Data = "{\"code\":500,\"msg\":\"密码不能为空\"}" }; } UserInfo userInfo = _userInfoServiceRepository.Find(x => x.UserName == userName && x.Pwd == pwd); if (userInfo == null) { return new JsonResult() { Data = "{\"code\":500,\"msg\":\"用户名和密码不匹配\"}" }; } if (!string.IsNullOrEmpty(remember) && remember.Equals("checked")) { HttpCookie nameCookie = new HttpCookie("n", userName); nameCookie.Expires = DateTime.Now.AddDays(7); //将md5串写入cookie,或者再次进行AES加密写入 HttpCookie pwdCookie = new HttpCookie("p", pwd); pwdCookie.Expires = DateTime.Now.AddDays(7); Response.Cookies.Add(nameCookie); Response.Cookies.Add(pwdCookie); } //登录成功写入session Session["user"] = userInfo; //更新登录状态 userInfo.LoginDt = DateTime.Now; _userInfoServiceRepository.Update(userInfo); _userInfoServiceRepository.SaveChanges(); return new JsonResult() { Data = "{\"code\":200,\"msg\":\"登录成功\"}" }; }
测试
登录成功后,跳转到FileList页面。
总结
关于ajax方式登录的内容就到这里。下面将进入网盘的主页。
-
博客地址:http://www.cnblogs.com/wolf-sun/
博客版权:如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步! 再次感谢您耐心的读完本篇文章。
分类:
[ASP.NET MVC]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
2014-10-22 [JQuery]用InsertAfter实现图片走马灯展示效果