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

原文地址:https://www.cnblogs.com/cuig/p/9052217.html

时间: 2024-07-29 04:25:15

C#使用MVC框架实现登陆验证的相关文章

MVC中的数据验证

一  概述 关于数据验证和数据注解,是任何软件系统不可小觑的必要模块,在软件系统中起到举足轻重的作用,主要作用是为了保证数据安全性.防止漏洞注入和网络攻击. 从数据验证的验证方式来说,我们一般分为客户端验证和服务端验证(或者两种方式相结合),本篇文章主要讲解基于ASP.NET MVC框架的数据验证特性和数据注解. 二  数据验证 (一)ASP.NET MVC 内置六大类数据验证特性 在ASP.NET MVC中,验证特性定义在 System.ComponentModel.DataAnnotatio

MVC用户登陆验证及权限检查(Form认证)

1.配置Web.conf,使用Form认证方式 <system.web> <authentication mode="None" /> <compilation debug="true" targetFramework="4.6.1" /> <httpRuntime targetFramework="4.6.1" /> <authentication mode="

BrnShop开源网上商城第二讲:ASP.NET MVC框架

在团队设计BrnShop的web项目之初,我们碰到了两个问题,第一个是数据的复用和传递,第二个是大mvc框架和小mvc框架的选择.下面我依次来说明下. 首先是数据的复用和传递:对于BrnShop的每一次请求,程序都要分成好几个阶段执行,例如验证,执行动作方法等等,在各个阶段我们可能需要重复使用同一信息,而我们的愿景就是希望此信息只需获取一次,然后沿着流程管道一直流动,这样在后面的阶段中就可以直接使用,不用再重新获取了,提高程序的性能.举例来说:在授权验证阶段,我们为对用户进行验证,从而获取了用户

小试Android中使用MVC框架模式

MVC简介 关于MVC网上的说法成千上万,每个人都有自己的理解,下面只是我个人现阶段学习的理解,欢迎指出不足之处~ MVC(Model View Controller 模型-视图-控制器) Model(模型)直接操作数据层(如数据库记录的读写等),通常有最重的处理任务 View(视图) 直接面向用户数据展示界面,接受用户的数据输入并传递给控制层 Controller(控制器)业务逻辑处理层,本身不输出任何东西和做任何处理.它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示

MVC框架浅析(基于PHP)

MVC框架浅析(基于PHP) MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面 显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于 映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. 一.MVC概念 MVC 是一种使用 MVC(Model View Contr

使用Intellij Idea自定义MVC框架

今天我学习了自定义一个简单的MVC框架,这个我们首先要知道什么是MVC框架! MVC框架: MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被独特的发展起来用于映射传统的输入.处理和输出功能在一个逻辑的图形化用户界面的结构中. 我们今天自己定义的

Java MVC框架性能比较

- by zvane 现在各种MVC框架很多,各框架的优缺点网络上也有很多的参考文章,但介绍各框架性能方面差别的文章却不多,本人在项目开发中,感觉到采用了struts2框架的项目访问速度,明显不如原来采用了struts1框架的项目快,带着这些疑惑,我对各类MVC框架的做了一个简单的性能分析比较,其结果应该说是基本符合预期的,可供大家参考. 测试环境:CPU:酷睿2 T5750,内存:DDR2-667 2G,Web容器:Tomcat6.0,最大线程数设置为1000,操作系统:WinXP-sp3 测

自制MVC框架CRUD操作、列表、分页显示插件介绍

这里涉及到的操作都是引用自Stephen.DALService数据层.数据访问层实现方式在后文中我会仔细的说明,先说明一下数据操作集成的插件. 1).InsertAttribute 用于插入记录. 状态返回值:假定hashtable传递变量名的是context ,那么返回值可通过context[InsertAttribute.ValueKey]得到,推荐返回的是插入的主键ID值,当然这个是由数据层设定的. 有以下属性可进行设置: 属性名 作用 默认值 选项说明 其它说明 Key 映射路径.格式如

简单封装自定义MVC框架

自定义Mvc框架结构及其使用方法 一,什么是MVC框架 MVC框架全名是model(模型)controller(控制器)view(视图文件)所构成的一种开发框架,是一种典型的软件设计典范,用一种业务逻辑,数据,显示相分离的方法组织代码,其好处是将业务逻辑聚集到一个部件里面,在改进和指定个性化页面的同时不需要重新编写业务逻辑,MVC被独特的发展起来用于映射传统的输入,处理,显示在一个业务逻辑的图形化业务界面中. 二,组成 ①,model(模型):主要负责具体功能的实现,一个模型对应一种功能 ②,v