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");
        }
    }
}

posted @ 2018-05-17 17:32  CG_Technology  阅读(2057)  评论(3编辑  收藏  举报