登录页面的代码

登录页面的代码开发工具与关键技术: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();
         }
     }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • mysql命令窗口_HLOOKUP函数

    mysql命令窗口_HLOOKUP函数窗口:记录集合窗口函数:在满足某些条件的记录集合上执行的特殊函数,对于每条记录都要在此窗口内执行函数。有的函数随着记录的不同,窗口大小都是固定的,称为静态窗口;有的函数则相反,不同的记录对应着不同的窗口,称为滑动窗口。1.窗口函数和普通聚合函数的区别:①聚合函数是将多条记录聚合为一条;窗口函数是每条记录都会执行,有几条记录执行完还是几条。②聚合函数也可以用于窗口函数。2.窗口函数的基…

  • 解决 Linux 内核代码审查人员短缺问题

    解决 Linux 内核代码审查人员短缺问题

  • scrapy爬虫储存到mysql_Scrapy爬虫案例 | 数据存储至MySQL

    scrapy爬虫储存到mysql_Scrapy爬虫案例 | 数据存储至MySQL首先,MySQL创建好数据库和表image然后编写各个模块item.pyimportscrapyclassJianliItem(scrapy.Item):name=scrapy.Field()url=scrapy.Field()pipeline.pyimportpymysql#导入数据库的类classJianliPipelin…

  • Drupal8的详细建站教程

    Drupal8的详细建站教程什么是drupal?    drupal是一个好用且功能强大的内容管理系统(CMS),通常也被称为是内容管理框架(CMF),由来自全世界各地的开发人员共同开发和维护,目前最新版本是Drupal8。安装drupal所需基础    建站环境:Windows或Linux操作系统   Web服务器:Apache,Nginx,Lighttpd,或微软的IIS服务器,

  • PLSQL详细使用教程及下载地址「建议收藏」

    PLSQL详细使用教程及下载地址「建议收藏」Oracle数据库连接必备,大公司玩转oracle数据库必备,虽然现在已经都用MYSQL替换了,但是不可否认这款软件的实力。中文版还具有语法加强、SQL和PL/SQL帮助、对象描述等功能特性。下载地址:http://kk04.cn/f-6339.html详细使用教程:http://kk04.cn/f-6342.html…

  • goland 2021.11.3 激活码【最新永久激活】「建议收藏」

    (goland 2021.11.3 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

发表回复

您的电子邮箱地址不会被公开。

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