一個簡單的用ASP.NET/C#開發的元件化Web應用程式(附原始碼)
==============================================================================
1)建立一個類來處理使用者登入,將該類編譯成一個裝配件(assembly),併發布到站點的bin目錄下。
==============================================================================
編輯C#源程式檔案class.cs:
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web.Security;
namespace Component
{
public class CheckLogin
{
public CheckLogin() : base()
{
}
//輸入工號和密碼,返回使用者名稱
public string isMember(string userName, string password)
{
// 定義SQL語句
string sql = "select ltrim(rtrim(nvcLName))+ltrim(rtrim(nvcFName)) as EmployeeName from [user] where workerNo = '" + userName + "' and [password] = '" + password + "'";
// 定義SQL連線
SqlConnection cn = new SqlConnection("server=server_sql;uid=sa;pwd=;database=myDB");
// 定義SQL命令並開啟連線
SqlCommand cmd = new SqlCommand(sql, cn);
cn.Open();
// 定義SQL資料讀取器、執行資料讀取、返回特定標題列的內容
SqlDataReader sdr;
sdr = cmd.ExecuteReader();
string name="";
if (sdr.Read())
{
name=sdr["EmployeeName"].ToString();
}
return name;
}
}
}
用csc命令將class.cs編譯為Component.dll,然後把該檔案複製到站點根目錄的bin子目錄下。這樣,一個裝配件的釋出就完成了。
==================================================================================
2)建立登入頁(login.aspx)。當用戶尚未登入就訪問主頁(default.aspx)時,會被重定向到登入頁。
==================================================================================
源程式如下:
<%@ Import Namespace="Component" %> //引入名稱空間——通過這樣可以在程式中使用Component.dll中的類
<%@ Import Namespace="System.Web.Security" %>
<HTML>
<HEAD>
<div id="outResult" runat="server"></div>
<script language="C#" runat="server">
void SubmitBtn_Click(object Source, EventArgs e){
CheckLogin cl = new CheckLogin(); //例項化元件Component中的CheckLogin類
if (inputName.Text != "")
{
if (inputPassword.Text != "")
{
//定義一個字串,它是CheckLogin類的例項cl的成員函式isMember()的返回值
string strName = cl.isMember(inputName.Text, inputPassword.Text);
if (strName != "")
{
FormsAuthentication.RedirectFromLoginPage(strName,false);
}
else
{
labelMessage.Text = "使用者不存在!請重新輸入或聯絡管理員";
inputName.Text = String.Empty;
}
}
else
{
labelMessage.Text = "請輸入密碼!";
}
}
else
{
labelMessage.Text = "請輸入使用者名稱!";
}
}
</script>
</HEAD>
<BODY>
<FONT FACE ="Verdana">
<H3>歡迎來到我的主頁!</H3>
請登入。
<form runat="server">
使用者:<asp:textbox ID="inputName" TextMode="SingleLine" Text="" Width="200px" runat="server"/>
<br/>
密碼:<asp:textbox ID="inputPassword" TextMode="Password" Text="" Width="200px" runat="server"/>
<br>
<br>
<asp:button OnClick="SubmitBtn_Click" Text="登入" runat="server"/>
<br>
<br>
<asp:label ID="labelMessage" style="color:red" runat="server"/>
</form>
</FONT>
</BODY>
</HTML>
=========================
3)建立首頁(default.aspx)
=========================
源程式如下:
<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>
<html>
<head>
<script language="C#" runat="server">
protected void Page_Load(Object Src, EventArgs E)
{
labelUserName.Text = User.Identity.Name; // 獲得經過驗證的使用者名稱
}
protected void Button_OnClick(Object Src, EventArgs E) // 登出並重定向到login.aspx
{
FormsAuthentication.SignOut();
Response.Redirect("login.aspx");
}
</script>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>首頁</title>
</head>
<body>
<form name="form1" method="post" action="" runat="server">
<table width="90%" border="0">
<tr>
<td width="90%">歡迎你,<asp:label ID="labelUserName" runat="server"></asp:label> !
</td>
<td width="10%"><asp:button ID="buttonSignout" Text="登出" OnClick="Button_OnClick" runat="server"/></td>
</tr>
</table>
</form>
====================
4)配置web.config檔案
====================
設定身份驗證模式為“表單”模式:
<configuration>
<system.web>
<authentication mode="Forms">
<forms name="login" loginUrl="login.aspx" protection="All" timeout="60"/>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>