• C#使用MVC框架实现登陆验证


    步骤一:需求分析

    我的目标是利用MVC框架实现简单登陆验证。从客户端输入用户名和密码。然后传给数据库验证。如果数据库存在此用户名ID和密码,则返回客户端账户姓名的成功提示。否则返回客户端失败信息。

    步骤二:搭建MVC框架

    新建项目>WEB>WEB应用程序

     步骤三:先添加一个控制器,然后VIEWS文件夹下找到对应和控制器同名文件夹里面搭建VIEW界面样式,最后修改路由 确定能在浏览器访问

    控制器:

    public class LoginController : Controller
        {
            // GET: Login
            public ActionResult Index()
            {
                return View("LoginView");
            }

    VIEW:

     <!DOCTYPE html>

    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>登陆界面</title>
    </head>
    <body>
        <form method="post" action="/Login/Login">     //action 提交后再返回到控制器处理此时可先用#代替
            用户名:<input name="LoginId" type="text" /> <br />
            密 码:<input name="LoginPwd" type="password" /> <br />
            <input type="submit" value="登陆" /><br/>
            @ViewData["info"]        //浏览器获取控制器的内容
        </form>
    </body>
    </html>

    路由RouteConfig.cs

    namespace MVCLogin
    {
        public class RouteConfig
        {
            public static void RegisterRoutes(RouteCollection routes)
            {
                routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

                routes.MapRoute(
                    name: "Default",
                    url: "{controller}/{action}/{id}",
                    defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional }
                );
            }
        }
    }

    步骤四:浏览器访问没问题后,正式开始编写内容,首先编写Models模型部分。通常Models包含实体类、通用数据访问类、通用数据库访问类(ADO.NET)

    1.实体类编写。编写用户登陆实体类。与数据库字段对应。

    namespace MVCLogin.Models
    {
        /// <summary>
        /// 登陆实体类,属性:登陆ID,登陆密码,用户名
        /// </summary>
        public class SysAdmin
        {
            public int LoginId { get; set; }
            public String  LoginPwd { get; set; }
            public String AdminName{ get; set; }

        }
    }

     2.通用数据库访问类,这里只编写查询的方法

    namespace MVCLogin.Models
    {
        /// <summary>
        /// 通用数据访问类
        /// </summary>
        public class SQLHelper
        {
            //定义数据库连接字符串
            public static string connString = ConfigurationManager.ConnectionStrings["connString"].ToString();  //将数据库连接字符串写在Web.config中,这里通过ConfigurationManager类的ConnectionStrings属性调用

            public static SqlDataReader getReader(string sql)
            {
                SqlConnection conn = new SqlConnection(connString);
                SqlCommand cmd = new SqlCommand(sql, conn);
                try
                {
                    conn.Open();
                    return cmd.ExecuteReader(CommandBehavior.CloseConnection);
                }
                catch (Exception ex)
                {

                    throw ex;
                }
            }
        }

    Web.config加节点

    <connectionStrings>
        <add name="connString"  connectionString="server=.;  DataBase=SMDBWeb; Uid=sa;Pwd=abc.123"/>
     </connectionStrings>

    3.编写实体访问类。实体访问类的命名一般是实体类名+Service。具体操作实体,封装实体,返回实体对象

    namespace MVCLogin.Models
    {
        /// <summary>
        /// 数据访问类
        /// </summary>
        public class SysAdminService
        {
            /// <summary>
            /// 根据登陆账号和密码登陆
            /// </summary>
            /// <param name="objSysAdmin"></param>
            /// <returns></returns>
            public SysAdmin AdminLogin(SysAdmin objSysAdmin)
            {
                string sql = "SELECT AdminName FROM dbo.Admins WHERE LoginId={0} and LoginPwd='{1}'";
                sql=string.Format(sql, objSysAdmin.LoginId, objSysAdmin.LoginPwd);
                SqlDataReader sdr = SQLHelper.getReader(sql);
                if (sdr.Read())
                {
                    objSysAdmin.AdminName = sdr["AdminName"].ToString(); //如果用户名ID和密码正确就返回用户名
                }
                else
                {
                    objSysAdmin = null;   //如果用户名ID和密码错误则清空对象
                }
                sdr.Close();
                return objSysAdmin;
            }
           
        }
    }

    步骤五:编写控制器。控制器一般包含三个步骤。1.获取数据2.业务处理3.返回数据

    namespace MVCLogin.Controllers
    {
        public class LoginController : Controller
        {
            // GET: Login
            public ActionResult Index()
            {
                return View("LoginView");
            }
            public ActionResult Login()
            {
                //[1]获取数据
                SysAdmin objSysAdmin = new SysAdmin
                {
                    LoginId = Convert.ToInt32(Request["LoginId"]),
                    LoginPwd = Request["LoginPwd"].ToString()
                };
                //[2]业务处理
                objSysAdmin=new SysAdminService().AdminLogin(objSysAdmin);
                if (objSysAdmin!=null)
                {
                    ViewData["info"] = "欢迎您," + objSysAdmin.AdminName;  //使用ViewDate传输数据
                }
                else
                {
                    ViewData["info"] = "用户名或密码错误";
                }
                //[3]返回数据
                return View("LoginView");
            }
        }
    }

  • 相关阅读:
    小吴破产了。。。。
    面试专场之「计算机网络」知识
    硬核!社招校招面试「计算机网络」知识点大集合!
    41 二分查找 (20分)
    我是一个 4 年的 iOSer
    开源者访谈录第 1 期:如何在 3 个月内斩获 14000 个 GitHub Star!
    荐号 | 高质量的 Python 类公众号
    一道看完答案你会觉得很沙雕的「动态规划算法题」
    几道和散列(哈希)表有关的面试题
    面试专场之「Git」知识
  • 原文地址:https://www.cnblogs.com/cuig/p/9052217.html
Copyright © 2020-2023  润新知