zoukankan      html  css  js  c++  java
  • MVC+EasyUI+三层新闻网站建立(四、实现登录)

    首先在数据库中建立一张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="stylesheet" />
        <link href="~/Content/EasyUI/themes/icon.css" 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: "登录",
                     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="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="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="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="20px"></td>
                                <td><img id="image" src="/Login/ValidateCode/?id=1" style="float: left; height: 24px;" /></td>
                                <td><a href="javascript:void(0)" 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)" id="btnOk" style="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:用户名或者密码错误");
                }
            }

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

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

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

  • 相关阅读:
    MERGE INTO
    StringBuffer 去掉最后一个字符
    spring boot 在线项目创建
    centos rpm包下载地址
    maven 添加jdbc6
    初识算法----二分查找
    初识递归
    爬虫----抽屉新热榜
    python基础 字典
    0002 两数相加
  • 原文地址:https://www.cnblogs.com/liuzhidao/p/7128120.html
Copyright © 2011-2022 走看看