AOD.Net用户登录认证实验

AOD.Net用户登录认证实验

一、实验目的

(1) 熟悉VS 2010开发环境,学会使用 VS 创建网站基本结构
(2)熟悉 HTML 服务器控件,特别是 FORM 表单服务器控件的设置
(3)掌握表单处理方法
(4)掌握服务器内置对象:Request、Response、Session 等内置对象的使用
(5)掌握 ASP.NET 日期时间类
(6)掌握在 MSSQL 2008 创建数据库、数据表,并能使用 SQL 语句进行表操作(SELECT、
INSERT、UPDATE、DELETE)
(7)掌握 Web.config 文件中变量的创建与读写
(8)掌握 ADO.NET 提供的连接式数据访问方式,了解非连接式数据访问方式
(9)掌握数据源 Web 服务器控件,数据 Web 服务器控件

二、实验环境

Windows 7、SQLServer2008、VS2010(C#)

三、实验内容

获取与表单用户名、密码后,在注册数据库中验证成功后,创建会话变量后,在myhome页面显示当前用户的私有数据;否则,提示请输入正确的用户名、密码。

四、原理实验步骤

原理:

通过服务器控件获取用户输入后,合法用户则创建相应的Session变量,并进行合适的网络重定向,并在myHome.aspx页面中显示相应的个人记录。
其中:合法用户的判断规则:未使用数据库/表时,启动静态用户名/口令验证原则;否则,通过查询MySite数据库中Users表中是否有该用户名/密码,为准。

实验步骤:

1. 通过 VS2010 创建空 ASP.NET 网站。添加 2 个 WEB 窗体:login.aspx,myhome.aspx

2. 添加新项 Visual C# Web 窗体:login.aspx。

2.1 设置窗体 Title 为:登录页

2.2 在 login.aspx 中,使用工具箱->标准:添加 3 个 Label、2 个 TextBox、2 个 Button 控件

2.3 设置控件属性
ID:Label1、Label2、Label3、txtUserName、txtPwd、btnLogin、 btnReset
设置 Label 标签的 Text 属性分别为:用户名、密码、请输入用户名密码
设置 Button 按钮的 Text 分别为:登录、重写

2.4 设置 Button 控件 Click 事件响应函数
btnLogin 的 Click 事件:
获取 TextBox 控件 txtUserName、txtPwd 的输入值(可通过对象的 属性或者 Request.form 集合获取相应的变量与变量值)检查 txtUserName、txtPwd 的值是否为合法用户,如:用户名为" 张三",密码为"1234",如果是的话,则创建 Session 变量保存 当前的登录用户名与密码,再重定向至 myhome.aspx;否则的话, 将 Label3 的 Text 属性设置为:请输入正确的用户名与密码!
btnReset 的 Click 事件:将 TextBox 控件 txtUserName、txtPwd 清空。

3. 添加新项 Visual C# Web 窗体:myhome.aspx。

3.1 设置窗体 Title 为:我的空间

3.2 在 myhome.aspx 中,使用工具箱->标准:添加 3 个 Label,1 个 Button。 3.3 设置控件属性
ID:Label1、Label2、Label3,btnLogout
设置 3 个 Label 标签的 Text 属性分别为:欢迎您来到您的空间!、空白、 空白。
设置 Button 的 Text 属性为:退出。

3.4 在myhome.aspx.cs的Page_Load响应函数中:
通过 Session 变量,验证当前用户是否已登录,如未登录则重定向至 login.aspx。
设置 Label2.Text 值为:当前用户名和密码,即 Session 中保存的用户名 和密码
设置 Label3.Text 值为:输出当前系统时间。

3.5 设置btnLogout的Click响应函数
退出当前 Session;
重定向到 login.aspx 窗体。

4.DBMS 系统熟悉与使用

4.1 SQL Server Management Studio 及其相关使用
启动 SQL Server2008 的 SQL Server Management Studio,登录成功后,右键单击数 据库附加 NetSchool 数据库(NetSchool_Data.MDF/NetSchool_Log.LDF),查看其中的 STUDENT/STUDENT_CLASS 表。

4.2 DBMS系统,用户名密码的验证
如从登录表单获取到用户名密码后,在数据库中执行:Select * From Student Where USERID=’201’ AND PASSWORD=’201’,如有返回查询结果集,则意味登录表单的用户名/密码正确。

5. 连接字符串的创建,以及 Web.config 文件的编辑
根据自己连接的数据库类型(SQL Server/Oracle/Access/ODBC 等),选择相应的数据库托管程序。具体方法为:通过在 VS2010 中的服务器资源管理器中,添加数据库连接,得到该数据库连接的 Connection String

6. 变更实验二中登录验证方式为数据库检索验证方式
请根据第七章的 ADO.NET 中的面向连接访问方式,在 login.aspx 的 btnLogin 的 Click 事件中修改代码,使得原先的静态用户名/密码验证改为,数据库 Netschool 中 Student 表中已有的用户才能够登录。

7. 使用 GridView 等控件,增强数据的显示与编辑
在 myhome.aspx 页面中,添加控件 GridView1,并根据自己对本门课程中,对数据源 服务器控件、数据绑定等掌握情况,合理地设计与编辑 GridView 控件的功能。

五、关键问题及解决方法

通过服务器控件获取用户输入后,合法用户则创建相应的Session变量,并进行合适的网络重定向,并在myHome.aspx页面中显示相应的个人记录,若是非法的用户则提示用户名或密码错误,可以选择向数据库中添加用户

六、实验结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、实验体会

通过对这次网络程序设计实验的学习,使我受益匪浅,获得了许多许多。通过自己动手进行实验操作,我熟悉了VS2010和SQL server2008开发环境,学会了使用VS2010等工具进行网页开发工作,使我对上课所学的知识有了更深层次的认识和理解,对于数据可和ASP.NET有了新的感悟。同时通过这次实验,我也在试验过程中发现了自身的很多不足,我会在以后尽力提高自己的不足.

附录:源代码(仅仅附上核心代码)

1.1网页login.aspx.cs或其他

public partial class login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void txtUserName_TextChanged(object sender, EventArgs e)
    {

    }
    protected void btnLogin_Click(object sender, EventArgs e)
    {
        string strUserName = txtUserName.Text;
        string strPsd = txtPwd.Text;
        SqlConnection conn;
        SqlCommand cmd;
        SqlDataReader rd;
        conn = new SqlConnection(@"Data Source=jf508-029;Initial Catalog=Netschool;Integrated Security=True");
        conn.Open();
        string sun;
        sun = "select * from  [NetSchool].[dbo].[STUDENT]where USERID='" + txtUserName.Text + "'and PASSWORD='" + txtPwd.Text + "'";
        cmd = new SqlCommand(sun, conn);
        rd = cmd.ExecuteReader();
        while (rd.Read())
        {
 	  Response.Redirect("myhome.aspx");
        }
        if (rd.HasRows)
        {
            Session["name"] = strUserName;
            Session["password"] = strPsd;
          
     
            rd.Close();
            conn.Close();
        }
        else
        {
            Label3.Text = "请输入正确的用户名密码";
        }

    }
    protected void btnReset_Click(object sender, EventArgs e)
    {
        txtUserName.Text = "";
        txtPwd.Text = "";
    }
}

2.1网页myhome.aspx.cs或其他

public partial class myhome : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["name"] == null)
        {
           
        }
        Label2.Text = "当前用户名和密码 " + Session["name"].Tostring() + " " + Session["password"].Tostring();
        Label3.Text = "输出当前系统时间" + DateTime.Now.ToString();
    }
    protected void btnLogout_Click(object sender, EventArgs e)
    {
        SqlConnection conn;
        SqlCommand cmd;
        SqlDataReader rd;
        conn = new SqlConnection(@"Data Source=jf508-029;Initial Catalog=Netschool;Integrated Security=True");
        String cmd_test = "SELECT+FROM CLASS";
        cmd = new SqlCommand(cmd_test, conn);
        conn.Open();
        rd = cmd.ExecuteReader();
        while (rd.Read())
        {
            ListBMyClass.Items.Add(new ListItem(rd["CLASSID"].ToString(), rd["CLASSID"].ToString()));
        }

        rd.Close();
        conn.Close();
    }
    
    protected void ListBMyClass_SelectedIndexChanged(object sender, EventArgs e)
    {

    }
}

2.3 数据库生成SQL语句[包括建库、建表语句;记录不需要]


SqlConnection conn;
        SqlCommand cmd;
        SqlDataReader rd;
        conn = new SqlConnection(@"Data Source=jf508-029;Initial Catalog=Netschool;Integrated Security=True");
        String cmd_test = "SELECT+FROM CLASS";
        cmd = new SqlCommand(cmd_test, conn);
        conn.Open();
        rd = cmd.ExecuteReader();
        while (rd.Read())
        {
            ListBMyClass.Items.Add(new ListItem(rd["CLASSID"].ToString(), rd["CLASSID"].ToString()));
        }
        rd.Close();
        conn.Close();
  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李霁明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值