通过设置数据库后相关内容后,设计 登录页面,利用Ado.net编程,实现用户名、密码的数据库验证进入合法访问页面,并能防止用户绕过登录页面,同时使用前端组件或服务器端gridview组件显示 该用户选修的课程。
时间: 2024-05-09 15:19:11 浏览: 13
以下是一个简单的示例,演示如何使用ASP.NET和ADO.NET实现登录验证和显示课程信息。
1. 创建数据库表格
首先,我们需要创建一个数据库表格来存储用户信息和课程信息。在这个示例中,我们创建了两个表格:
- users: 存储用户信息,包括用户名和密码。
- courses: 存储课程信息,包括课程名称和选课人数。
以下是两个表格的结构:
users表格:
| 列名 | 数据类型 |
| --- | --- |
| id | int |
| username | nvarchar(50) |
| password | nvarchar(50) |
courses表格:
| 列名 | 数据类型 |
| --- | --- |
| id | int |
| name | nvarchar(50) |
| enrollments | int |
2. 创建ASP.NET页面
接下来,我们创建一个ASP.NET页面来实现登录验证和显示课程信息。以下是页面的基本结构:
```html
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1.Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Login Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<h1>Login</h1>
<asp:Label ID="lblMessage" runat="server" Text=""></asp:Label><br />
<asp:TextBox ID="txtUsername" runat="server"></asp:TextBox><br />
<asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox><br />
<asp:Button ID="btnLogin" runat="server" Text="Login" OnClick="btnLogin_Click" /><br />
<br />
<h1>My Courses</h1>
<asp:GridView ID="gvCourses" runat="server"></asp:GridView>
</div>
</form>
</body>
</html>
```
该页面包含一个登录表单和一个用于显示课程信息的GridView组件。
3. 编写代码
在页面的代码后台中,我们需要编写代码来处理登录验证和显示课程信息。以下是代码的基本结构:
```c#
using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.Configuration;
namespace WebApplication1
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// 如果用户未登录,则隐藏课程信息
if (Session["username"] == null)
{
gvCourses.Visible = false;
}
else
{
// 加载课程信息
LoadCourses();
}
}
protected void btnLogin_Click(object sender, EventArgs e)
{
// 获取用户名和密码
string username = txtUsername.Text;
string password = txtPassword.Text;
// 验证用户名和密码
if (ValidateUser(username, password))
{
// 登录成功,保存用户名到Session
Session["username"] = username;
// 显示课程信息
gvCourses.Visible = true;
LoadCourses();
}
else
{
// 登录失败,显示错误信息
lblMessage.Text = "Invalid username or password.";
}
}
private bool ValidateUser(string username, string password)
{
// 从Web.config中读取数据库连接字符串
string connectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
// 创建SQL连接和命令对象
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand("SELECT COUNT(*) FROM users WHERE username=@username AND password=@password", connection))
{
// 添加参数
command.Parameters.AddWithValue("@username", username);
command.Parameters.AddWithValue("@password", password);
// 打开连接并执行命令
connection.Open();
int count = (int)command.ExecuteScalar();
// 如果找到了匹配的用户,则返回true,否则返回false
return (count > 0);
}
}
private void LoadCourses()
{
// 从Web.config中读取数据库连接字符串
string connectionString = WebConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
// 创建SQL连接和命令对象
using (SqlConnection connection = new SqlConnection(connectionString))
using (SqlCommand command = new SqlCommand("SELECT name, enrollments FROM courses WHERE id IN (SELECT courseId FROM enrollments WHERE username=@username)", connection))
{
// 添加参数
command.Parameters.AddWithValue("@username", Session["username"]);
// 创建DataAdapter和DataSet对象
SqlDataAdapter adapter = new SqlDataAdapter(command);
DataSet dataSet = new DataSet();
// 填充DataSet
adapter.Fill(dataSet);
// 绑定GridView
gvCourses.DataSource = dataSet;
gvCourses.DataBind();
}
}
}
}
```
该代码中的关键点包括:
- 在Page_Load事件中,如果用户未登录,则隐藏GridView组件。
- 在btnLogin_Click事件中,验证用户名和密码,如果验证成功,则保存用户名到Session并显示GridView组件。
- ValidateUser方法使用SQL查询验证用户名和密码。
- LoadCourses方法使用SQL查询获取该用户选修的课程信息,并将其绑定到GridView组件上。
4. 测试应用程序
现在,我们可以部署并测试我们的应用程序。在访问登录页面时,用户需要输入他们的用户名和密码。如果验证成功,则他们将被重定向到一个页面,该页面将显示该用户选修的课程信息。如果用户未通过验证,则会显示错误消息。
此外,如果用户尝试绕过登录页面,直接访问课程信息页面,则GridView组件将不会显示任何内容,因为用户未进行身份验证。