1. 程式人生 > >一個簡單的用ASP.NET/C#開發的元件化Web應用程式(附原始碼)

一個簡單的用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>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<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>