登录页面的代码

登录页面的代码开发工具与关键技术:MVC/JavaScript作者:邱慧敏撰写时间:2019/06/25在把页面和数据库做好之后,我的登录页面只需要用户名和密码,所以代码比较简单。先找到登录按钮,给一个点击事件,然后再获取他们的表单值,然后对用户名和密码进行判断,判断是否填写了资料和是否是正确的账户和密码,在这之前还要检查登录页面是否是属于外层页面。dataValidationFo…

大家好,又见面了,我是你们的朋友全栈君。

登录页面的代码

在把页面和数据库做好之后,我的登录页面只需要 用户名和密码 ,所以代码比较简单。
先找到登录按钮,给一个点击事件,然后再获取他们的表单值,然后对用户名和密码进行判断,判断是否填写了资料和是否是正确的账户和密码,在这之前还要检查登录页面是否是属于外层页面。dataValidationForm 是from表单的ID,用户名和密码必须要加上value

<input type="text" name="UserNuber" id="UserNuber" class="form-control" placeholder="用户名" value="@ViewBag.UserNuber" style="width:93%;" />
 <input type="Password" name="Password" id="Password" class="form-control" placeholder="密码" value="@ViewBag.Password" style="width:93%;" />
<script>
 var layer;
   $(function () {
       //键盘按下事件
       window.onkeydown = onreturn;
         //用于检查登录页面是否是外层页面
         if (window.top.location.href != window.location.href) {
             window.top.location.href = window.location.href;
            }
         //加载&初始化layui模块,弹出层模块
         layui.use(['layer'], function (args) {
             layer = layui.layer;
         });
        $("#btnSubmit").click(function () {
          //获取值
          var UserNuber = $('#dataValidationForm [name="UserNuber"]').val();//用户名
          var Password = $('#dataValidationForm [name="Password"]').val();//密码
var rememberMe = $('#dataValidationForm[name="rememberMe"]:checked').val();//是否记住密码
            //判断是否填写数据 判断用户名和密码
            if (strValIsNotNull(UserNuber) && strValIsNotNull(Password)) {
                var layerIndex = layer.load();//打开加载层
                $.post("/WCommerce/UserLogin",//路径:控制器名称+控制器中的方法名称
                  {
                     UserNuber: UserNuber,//用户名
                     Password: Password,//密码
                     rememberMe: rememberMe,//是否记住密码
                   }, function (msg) {
                     layer.close(layerIndex);//加载层
                   if (msg == "success") {
                       //alert("登录成功");
                       //跳转到主页面
                window.location.replace("/WCommerce/Main");//跳转路径:控制器名称+主页面
                } else {
                    if (msg == "PasswordErro") {
                        layer.alert('请输入正确的账号或密码');
                      }
                     else if (msg == "userNoExsit") {
                         layer.alert('用户不存在');
                      }
                      else {
                         layer.alert('登录失败');
                      }
                       //清空密码
                       $("#Password").val("");
                            }
                        });
                } else {
                    alert("请填写完整数据");
                }
            });
            //字符串值不为空
            function strValIsNotNull(strVal) {
                return strVal != undefined && strVal != null && strVal != '';
            }
    </script>

然后在后台里获取cookie,

public ActionResult Login()
{
   string UserNuber = "";
   string Password = "";    
   bool isRember = false;
   //获取cookie
  HttpCookie cookie = System.Web.HttpContext.Current.Request.Cookies["user"];
    if (cookie != null)
      {
       if (cookie["UserNuber"] != null)
        {
      UserNuber = System.Web.HttpContext.Current.Server.UrlDecode(cookie["UserNuber"]);
            }
            if (cookie["Password"] != null)
             {
      Password = System.Web.HttpContext.Current.Server.UrlDecode(cookie["Password"]);
              }
              isRember = true;
            }
            ViewBag.UserNuber = UserNuber;
            ViewBag.Password = Password;
            ViewBag.isRember = isRember;
            return View();
        }

接下来就是最关键的后台代码了,获取页面传递的变量,然后用linq的查询方法,根据账号查询出一条用户数据…

 public ActionResult UserLogin(PW_User pwUser)
{
   string strMsg = "fail";//定义一个记录状态的变量
   //获取页面传递的变量
   string strUserNuber = pwUser.UserNuber;   //用户名
   string strPassword = pwUser.Password;     //密码
   string strIsRember = Request["rememberMe"];    //记住否        
   //验证码正确
    try
     {
      //根据账号查询出一条用户数据
      //linq
       PW_User dbUser = (from tbUser in myModels.PW_User
                         where tbUser.UserNuber == strUserNuber && tbUser.ToVoidNo == true
                         select tbUser).Single();//结果只能有一条数据,0条或者大于等于2条都会出现异常(一般单表查询时用)
       //对用户输入的密码加密
       string password = Common.AESEncryptHelper.Encrypt(strPassword);
       //用加密后的密码和数据库查询到的密码比较
       if (password == dbUser.Password)
        {
          //=验证选择的角色是否正确
          var listUserType = (from tbUser in myModels.PW_User
                              join tbUserRoleDetail in myModels.PW_UserRoleDetail on tbUser.UserID equals tbUserRoleDetail.UserID
                              join tbUserType in myModels.SYS_UserType on tbUserRoleDetail.UserTypeID equals tbUserType.UserTypeID
                              where tbUser.UserID == dbUser.UserID
                              select new
                              {
                                 tbUserType.UserTypeID,
                                 tbUserType.UserType
                               }).ToList();
           if (listUserType.Count > 0)
             {
                //=确认身份正确
//把用户数据放到session中
                //获取用户类型名称
                string userTypeName = listUserType[0].UserType.Trim();
                //获取用户类型ID
                int userTypeId = listUserType[0].UserTypeID;
                //设置session
                Session["UserID"] = dbUser.UserID;//传递UserID
                Session["UserTypeID"] = userTypeId;//传递UserTypeID
                Session["ServerTime"] = DateTime.Now.ToString("yyy-MM-dd HH:mm:ss");//登录时间
                //记住用户信息 使用cookie
                if (strIsRember != null && strIsRember.Trim() == "true")
                   {
                     //记住
                     //记住密码 保存cookie
                     HttpCookie cookie = new HttpCookie("user");
                     cookie.Expires = DateTime.Now.AddDays(7);//保存7天
                     cookie["UserNuber"] = strUserNuber;//用户名
                     cookie["Password"] = strPassword;//密码
                     Response.Cookies.Add(cookie);
         }
         else
             {
                //忘记
                HttpCookie cookie = new HttpCookie("user");
                cookie.Expires = DateTime.Now.AddDays(-1);//有效期设置为昨天,浏览器会自动删除cookie
                Response.Cookies.Add(cookie);
               }
                 strMsg = "success";//登录成功
                 }
                  else
                      {
                        strMsg = "userTypeErro";//用户类型错误
                        }
                    }
                    else
                    {
                        strMsg = "passwordErro";//密码错误
                    }
                }
                catch (Exception e)
                {
                    strMsg = "userNoExsit";//没有此用户
                    Console.Write(e);
                    //throw;
                }
            return Json(strMsg, JsonRequestBehavior.AllowGet);
        }

完整代码就是这样的了,如果还需要其他的判断条件可自行添加上去。效果图:
在这里插入图片描述
如果需要按回车键登录的话,

//按下回车键实现登录效果
 function onreturn() {
  if (window.event.keyCode == 13) {
     $("#btnSubmit").click();
         }
     }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125056.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ORA-12560: TNS: 协议适配器错误 解决方法[通俗易懂]

    ORA-12560: TNS: 协议适配器错误 解决方法[通俗易懂]前言&nbsp;&nbsp;&nbsp;&nbsp;我在控制台重启oracle服务端监听lsnrctlstart的时候&nbsp;&nbsp;&nbsp;&nbsp;报错:ORA-12560:TNS:协议适配器错误解决方法&nbsp;&nbsp;&nbsp;&nbsp;一:检查监听口是否开启。在开始-运行,输入services.msc或者在控制面板-管理工具,进入服务。找…

    2022年6月17日
  • 用 Unity 进行网络游戏开发(一)

    用Unity进行网络游戏开发(一)这是我之前写的了,一直保存在电脑里,现在学习写博客。希望多和大家交流,共同进步,文章中说得不好的地方请指出,谢谢!使用Unity3D进行网络游戏开发一.Unity3d简介   Unity3d是时下比较流行的一款游戏引擎,流行是因为用它做游戏很方便,无论是3d还是2d都会有非常好的效果,即便某些朋友不懂编程,也可以通过U

    2022年4月12日
  • java中synchronized使用方法

    java中synchronized使用方法

    2021年12月2日
  • awvs无法启动问题

    awvs无法启动问题awvs作为一个自动化漏扫工具,话说挺好用的,刚开始用的awvs11,用的还行,就是报告里报文啥的不好操作,然后去年下载了awvs13准备安装使用,结果,结果,试了n次,都是无法使用试了网上好多解决教程,重启服务等等,还是不行,那时候果断放弃了,今天突然想把awvs,burp和xray结合起来使用,就又开始安装折腾awvs14,试了三次,果不其然,不行突然发现我的计算机名字是中文,awvs14不支持计算机名为中文,啊,改改改。…

    2022年9月22日
  • C++基础篇 — vector的resize函数和reserve函数

    对于C++的vector容器模板类,存在size和capacity这样两个概念,可以分别通过vector的size()和capacity()方法获得该vector当前的size和capacity值。相应的,vector提供了两个方法来分别对size和capacity进行操作,它们就是resize方法和reserve方法。首先,对于size和capacity,这是两个比较容易混淆的概念。

    2022年4月7日
  • Web聊天工具

    Web聊天工具8款开源聊天系统和程序,包含聊天程序,或是搭建你自己的聊天室系统。来源于:http://parandroid.com/8-open-source-chat/ MOHAChat http://mohachat.org/MOHAChat是一个客户端采用Ajax技术,服务端基于PHP与MySQL的点对点聊天系统。类似于GTalk。 phpFreeChat http://www.p

    2022年6月15日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号