MVC+EasyUI+三层新闻网站建立 实现登录功能(四)

 更新时间:2021年9月22日 10:03  点击:1335

MVC新闻网站建立,实现登录功能

首先在数据库中建立一张UserInfo表。

注:以下讲的这些可以用动软代码生成器直接生成,但是对于新手来说还是动手敲一下的好,了解以下实现的过程。

然后在Model中建立UserInfo的实体层。

 public class UserInfo
  {
    public int Id { get; set; }
    public string UserName { get; set; }
    public string UserPwd { get; set; }
    public string UserMail { get; set; }
    public DateTime RegTime { get; set; }
  }

接着就在DAL层中建立UserInfo的数据库访问

//根据用户名密码查询用户
    public UserInfo GetUserInfoModel(string userName, string userPwd)
    {
      string sql = "select * from T_UserInfo where UserName=@UserName and UserPwd=@UserPwd";
      SqlParameter[] pms = { 
                 new SqlParameter("@UserName",SqlDbType.NVarChar,32),
                 new SqlParameter("@UserPwd",SqlDbType.NVarChar,32)
                 };
      //给参数赋值
      pms[0].Value = userName;
      pms[1].Value = userPwd;
      DataTable dt = SqlHelper.ExcuteDataTable(sql, CommandType.Text, pms);
      UserInfo userInfo = null;
      if (dt.Rows.Count>0)
      {
        userInfo = new UserInfo();
        LoadEntity(dt.Rows[0],userInfo);
      }
      return userInfo;
    }

    private void LoadEntity(DataRow dataRow, UserInfo userInfo)
    {
      userInfo.Id = Convert.ToInt32(dataRow["Id"]);
      //判断是否为空
      userInfo.UserName = dataRow["UserName"] != DBNull.Value ? dataRow["UserName"].ToString() : string.Empty;
      userInfo.UserPwd = dataRow["UserPwd"] != DBNull.Value ? dataRow["UserPwd"].ToString() : string.Empty;
      userInfo.UserMail = dataRow["UserMail"] != DBNull.Value ? dataRow["UserMail"].ToString() : string.Empty;
      userInfo.RegTime = Convert.ToDateTime(dataRow["RegTime"]);
    }

在BLL层中建立UserInfo的逻辑处理层UserInfoServices

 DAL.UserInfoDal userInfoDal = new DAL.UserInfoDal();
    public UserInfo GetUserInfoModel(string userName, string userPwd)
    {
      return userInfoDal.GetUserInfoModel(userName, userPwd);
    }

这些都准备完毕后就到登录页面提交表单就可以了(在提交表单之前需要判断用户名、密码、验证码是否为空,下面我做了一个简单的判断)

@{
  Layout = null;
}

<!DOCTYPE html>

<html>
<head>
  <meta name="viewport" content="width=device-width" />
  <title>登录</title>
  <script src="~/Scripts/jquery-1.8.2.js"></script>
  <script src="~/Content/EasyUI/jquery.easyui.min.js"></script>
  <script src="~/Content/EasyUI/easyui-lang-zh_CN.js"></script>
  <link href="~/Content/EasyUI/themes/default/easyui.css" rel="external nofollow" rel="stylesheet" />
  <link href="~/Content/EasyUI/themes/icon.css" rel="external nofollow" rel="stylesheet" />
  <script type="text/javascript">
    $(function () {
      
      initWin(); //初始化登录窗体
      changeCheckCode(); //切换验证码
      cheakLogin(); //验证登录
    });
    //验证登录
    function cheakLogin() {
      $("#btnOk").click(function () {
        
        if ($("#txtName").val() == "") {
          $("#spanName").text("必填");
        }
        else {
          $("#spanName").text("");
        }
        if ($("#txtPwd").val() == "") {
          $("#spanPwd").text("必填");
        }
        else {
          $("#spanPwd").text("");
        }
        if ($("#txtVcode").val() == "") {
          $("#spanVcode").text("必填");
        }
        else {
          $("#spanVcode").text("");
        }
        if ($("#txtName").val() != "" && $("#txtPwd").val() != "" && $("#txtVcode").val() != "") {
          //先把表单序列化为json对象
          var jsonForm = $("#loginForm").serializeArray();
          //把数据异步提交到后台
          $.ajax({
            type: "post",
            url: "/Login/CheckLogin",
            data: jsonForm,
            success: function (data) {
              var serverData = data.split(':');
              if (serverData[0]=="ok") {
                window.location.href = "/Home/Index";
              }
              else if (serverData[0] == "no") {
                $("#spanCheak").text(serverData[1]);
              }
              else {
                $("#spanCheak").text("异常错误");
              }
            }
        
          });
        }
      });
    }
    //初始化登录窗体
    function initWin() {
      $("#win").window({
        title: "登录",
        width: 400,
        height: 270,
        collapsible: false,
        minimizable: false,
        maximizable: false,
        closable: false,
        modal: true,
        resizable: false,
      });
      
    }
    //切换验证码
    function changeCheckCode() {
      $("#changeVcode").click(function () {
        $("#image").attr("src", $("#image").attr("src") + 1);
      });
    }
  </script>
</head>
<body>
  
    <div id="win" class="easyui-window">
      <div>
        <div style="height:20px"></div>
        <form id="loginForm">

          <table>
            <tr>
              <td style="width:20px"></td>
              <td>用户名:</td>
              <td><input type="text" class="easyui-textbox" id="txtName" name="txtName" /></td>
              <td><span id="spanName" style="color:red"></span></td>
            </tr>
            <tr style="height:10px"></tr>

            <tr>
              <td style="width:20px"></td>
              <td>密 码:</td>
              <td><input type="password" class="easyui-textbox" id="txtPwd" name="txtPwd"></td>
              <td><span id="spanPwd" style="color:red"></span></td>
            </tr>
            <tr style="height:10px"></tr>
            <tr>
              <td style="width:20px"></td>
              <td>验证码:</td>
              <td><input type="text" class="easyui-textbox" id="txtVcode" name="txtVcode" /></td>
              <td><span id="spanVcode" style="color:red"></span></td>
            </tr>

            <tr style="height:10px"></tr>

            <tr>
              <td style="width:20px"></td>
              <td><img id="image" src="/Login/ValidateCode/?id=1" style="float: left; height: 24px;" /></td>
              <td><a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" id="changeVcode">看不清,换一张</a></td>
            </tr>

          </table>
        </form>
      </div>
      <div style="height:10px"></div>
      <div data-options="region:'south',border:false" style="text-align:center;padding:5px 0 0;">
        <a class="easyui-linkbutton" data-options="iconCls:'icon-ok'" href="javascript:void(0)" rel="external nofollow" rel="external nofollow" id="btnOk" style="width:80px">登录</a>
        <span id="spanCheak" style="color:red"></span>
      </div>


</body>
</html>

在上面的代码可以看出我是用的ajax异步提交表单到了  /Login/CheckLogin  路径下这代表  Login控制器下的CheckLogin (需要自己新建)  也就是说登录的逻辑判断处理就是在CheckLogin   里面完成的。

 public ActionResult CheckLogin()
    {
      //拿到session的值
      string Vcode = Session["validateCode"].ToString();
      //清空session
      Session["validateCode"] = null;
      string requestCode = Request["txtVcode"].ToString();
      string userName = Request["txtName"].ToString();
      string userPwd = Request["txtPwd"].ToString();
      if (!requestCode.Equals(Vcode,StringComparison.CurrentCultureIgnoreCase))
      {
        return Content("no:验证码错误!!");
      }
      BLL.UserInfoServices userInfoServices = new BLL.UserInfoServices();
      UserInfo userinfo = userInfoServices.GetUserInfoModel(userName, userPwd);
      if (userinfo != null)
      {
        Session["userName"] = userinfo.UserName;
        return Content("ok:登录成功");
      }
      else
      {
        return Content("no:用户名或者密码错误");
      }
    }

注:连接数据库的语句自己在配置文件里面配置

上面的步骤每步都正确的话,那么重新生成解决方案后,运行输入用户名密码就可以登录成功了

 这里可以看到页面已经实现了跳转。只是主页还没有建立而已。下一讲就讲主页的布局。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持猪先飞。

[!--infotagslink--]

相关文章

  • php中登录后跳转回原来要访问的页面实例

    在很多网站用户先访问一个要登录的页面,但当时没有登录后来登录了,等待用户登录成功之后肯定希望返回到上次访问的页面,下面我就来给大家介绍登录后跳转回原来要访问的页...2016-11-25
  • php中用curl模拟登录discuz以及模拟发帖

    本文章完美的利用了php的curl功能实现模拟登录discuz以及模拟发帖,本教程供参考学习哦。 代码如下 复制代码 <?php $discuz_url = &lsquo;ht...2016-11-25
  • Ruby on Rails实现最基本的用户注册和登录功能的教程

    这里我们主要以has_secure_password的用户密码验证功能为中心,来讲解Ruby on Rails实现最基本的用户注册和登录功能的教程,需要的朋友可以参考下...2020-06-30
  • PHP中SSO Cookie登录分析和实现

    什么是SSO?单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护...2015-11-08
  • php有效防止同一用户多次登录

    【问题描述】:同一用户在同一时间多次登录如果不能检测出来,是危险的。因为,你无法知道是否有其他用户在登录你的账户。如何禁止同一用户多次登录呢? 【解决方案】 (1) 每次登录,身份认证成功后,重新产生一个session_id。 s...2015-11-24
  • PHP中SSO Cookie登录分析和实现

    什么是SSO?单点登录SSO(Single Sign-On)是身份管理中的一部分。SSO的一种较为通俗的定义是:SSO是指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护...2015-11-08
  • vue实现用户登录切换

    这篇文章主要为大家详细介绍了vue实现用户登录切换,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-04-22
  • SpringMVC文件上传原理及实现过程解析

    这篇文章主要介绍了SpringMVC文件上传原理及实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-07-15
  • 修改mysql密码phpmyadmin不能登录

    出现phpmyadmin不能登录是我在修改我mysql服务器密码之后导致的,后来百度了相关的原因,原来是修改了mysql密码之后我们还需要在phpmyadmin目录中去修改config.inc.php中...2016-11-25
  • C# MVC模式中应该怎样区分应用程序逻辑(Controller层)和业务逻辑(Model层)?

    这篇文章主要介绍了C# MVC模式中应该怎样区分应用程序逻辑(Controller层)和业务逻辑(Model层)?,这也小编做.NET项目时经常思考和让人混乱的一个问题,这篇文章写的挺好,一下清晰了许多,需要的朋友可以参考下...2020-06-25
  • Vue-Element-Admin集成自己的接口实现登录跳转

    关于这个Vue-element-admin中的流程可能对于新的同学不是很友好,所以本文将结合实例代码,介绍Vue-Element-Admin集成自己的接口实现登录跳转,感兴趣的小伙伴们可以参考一下...2021-06-23
  • 浅谈js二维码扫码登录是什么原理

    这篇文章主要介绍了浅谈js二维码扫码登录是什么原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-04-13
  • 使用Maven 搭建 Spring MVC 本地部署Tomcat的详细教程

    这篇文章主要介绍了使用Maven 搭建 Spring MVC 本地部署Tomcat,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-08-16
  • SpringMvc自动装箱及GET请求参数原理解析

    这篇文章主要介绍了SpringMvc自动装箱及GET请求参数原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-19
  • phpmyadmin不能登录,无任何提示的问题解决

    昨天有一朋友说自己的phpmyadmin不能登录并且无任何提示了,问我怎么解决,下面我来分享一下关于phpmyadmin不能登录问题总结. phpmyadmin不能登录没有提示 解决方法:...2016-11-25
  • SpringMvc获取请求头请求体消息过程解析

    这篇文章主要介绍了SpringMvc获取请求头请求体消息过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-17
  • Springmvc ResponseBody响应json数据实现过程

    这篇文章主要介绍了Springmvc ResponseBody响应json数据实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-10-26
  • PHP中如何使用session实现保存用户登录信息

    session在php中是一个非常重要的东西,像我们用户登录一般都使用到session这个东西,相对于cookie来说session 要安全很多,同时我们购物车经常使用session来做临时的记录保存哦。使用session保存页面登录信息1、数据库连接...2015-10-21
  • 简单php cookie用户登录实例

    cookie 的用途之一是存储用户在特定网站上的密码和 id。另外,也用于存储起始页的首选项。在提供个人化查看的网站上,将要求阁下的网络浏览器利用阁下计算机硬驱上的少量...2016-11-25
  • 基于C#后台调用跨域MVC服务及带Cookie验证的实现

    本篇文章介绍了,基于C#后台调用跨域MVC服务及带Cookie验证的实现。需要的朋友参考下...2020-06-25