同桌上课用手指进去了好爽_欧美丰满熟妇xxⅹⅹ性大i_成人av天天日天天拍拍_猛男gay帅男gay男男同志_欧美va天堂在线观看_人妻无码av中文系列三里桃花_亚欧免费无码在线观看_久久久精品国产亚洲av水_日韩在线免费看污污污_2021无码专区人妻系列日韩

首頁 優(yōu)化推廣 如何使用 C# .NET 在 ASP.NET 應(yīng)用程序中實(shí)現(xiàn)基于窗體的身份驗(yàn)證

如何使用 C# .NET 在 ASP.NET 應(yīng)用程序中實(shí)現(xiàn)基于窗體的身份驗(yàn)證

來源: | 時(shí)間:2011/4/9 17:23:40 |

本文介紹如何通過使用數(shù)據(jù)庫存儲(chǔ)用戶來實(shí)現(xiàn)基于窗體的身份驗(yàn)

要求

下表列出了推薦使用的硬件、軟件、網(wǎng)絡(luò)架構(gòu)以及所需的 Service Pack:

  • Microsoft Visual Studio .NET
  • Microsoft Internet 信息服務(wù) (IIS) 5.0 或更高版本
  • Microsoft SQL Server

使用 C# .NET 創(chuàng)建 ASP.NET 應(yīng)用程序

  1. 打開 Visual Studio .NET。
  2. 新建 ASP.NET Web 應(yīng)用程序,并指定應(yīng)用程序的名稱和位置。

在 Web.config 文件中配置安全設(shè)置

本節(jié)介紹如何添加和修改 <authentication><authorization> 配置部分,以便將 ASP.NET 應(yīng)用程序配置為使用基于窗體的身份驗(yàn)證。

  1. 在解決方案資源管理器中,打開 Web.config 文件。
  2. 將身份驗(yàn)證模式更改為 Forms(窗體)。
  3. 插入 <Forms> 標(biāo)記,并填入相應(yīng)的屬性。(有關(guān)這些屬性的更多信息,請(qǐng)參考 MSDN 文檔或快速入門文檔,這些文檔在 參考 一節(jié)中列出。)復(fù)制以下代碼,然后在“編輯”菜單中單擊“粘貼為 HTML”,將該代碼粘貼到文件的 <authentication> 部分:
    <authentication mode="Forms">
       <forms name=".ASPXFORMSDEMO" loginUrl="logon.aspx" 
       protection="All" path="/" timeout="30" />
    </authentication> 
    					
  4. <authorization> 部分中拒絕匿名用戶的訪問(如下所示):
    <authorization>
       <deny users ="?" />
       <allow users = "*" />
    </authorization>
    					

創(chuàng)建示例數(shù)據(jù)庫表以存儲(chǔ)用戶詳細(xì)信息

本節(jié)介紹如何創(chuàng)建可存儲(chǔ)用戶名、密碼和用戶角色的示例數(shù)據(jù)庫。如果要將用戶角色存儲(chǔ)在數(shù)據(jù)庫中并實(shí)現(xiàn)基于角色的安全性,則需要角色列。

  1. 在“開始”菜單上,單擊“運(yùn)行”,然后鍵入 notepad 以打開記事本。
  2. 突出顯示以下 SQL 腳本代碼,右鍵單擊該代碼,然后單擊“復(fù)制”。在記事本中,單擊“編輯”菜單上的“粘貼”以粘貼以下代碼:
    if exists (select * from sysobjects where id = 
    object_id(N [dbo].[Users] ) and OBJECTPROPERTY(id, N IsUserTable ) = 1)
    drop table [dbo].[Users]
    GO
    CREATE TABLE [dbo].[Users] (
       [uname] [varchar] (15) NOT NULL ,
       [Pwd] [varchar] (25) NOT NULL ,
       [userRole] [varchar] (25) NOT NULL ,
    ) ON [PRIMARY]
    GO
    ALTER TABLE [dbo].[Users] WITH NOCHECK ADD 
       CONSTRAINT [PK_Users] PRIMARY KEY  NONCLUSTERED 
       (
          [uname]
       )  ON [PRIMARY] 
    GO
    
    INSERT INTO Users values( user1 , user1 , Manager )
    INSERT INTO Users values( user2 , user2 , Admin )
    INSERT INTO Users values( user3 , user3 , User )
    GO
    					
  3. 將該文件另存為 Users.sql。
  4. 在 Microsoft SQL Server 計(jì)算機(jī)上,在查詢分析器中打開 Users.sql。在數(shù)據(jù)庫列表中,單擊“pubs”,然后運(yùn)行該腳本。這將創(chuàng)建一個(gè)示例用戶表,并使用此示例應(yīng)用程序填充要使用的 Pubs 數(shù)據(jù)庫中的該表。

創(chuàng)建 Logon.aspx 頁

  1. 將一個(gè)新的 Web 窗體添加到名為 Logon.aspx 的項(xiàng)目中。
  2. 在編輯器中打開 Logon.aspx 頁,并切換到 HTML 視圖。
  3. 復(fù)制以下代碼,然后使用“編輯”菜單上的“粘貼為 HTML”選項(xiàng)將代碼插入到 <form> 標(biāo)記之間:
    <h3>
       <font face="Verdana">Logon Page</font>
    </h3>
    <table>
       <tr>
          <td>Email:</td>
          <td><input id="txtUserName" type="text" runat="server"></td>
          <td><ASP:RequiredFieldValidator ControlToValidate="txtUserName"
               Display="Static" ErrorMessage="*" runat="server" 
               ID="vUserName" /></td>
       </tr>
       <tr>
          <td>Password:</td>
          <td><input id="txtUserPass" type="password" runat="server"></td>
          <td><ASP:RequiredFieldValidator ControlToValidate="txtUserPass"
              Display="Static" ErrorMessage="*" runat="server" 
              ID="vUserPass" />
          </td>
       </tr>
       <tr>
          <td>Persistent Cookie:</td>
          <td><ASP:CheckBox id="chkPersistCookie" runat="server" autopostback="false" /></td>
          <td></td>
       </tr>
    </table>
    <input type="submit" Value="Logon" runat="server" ID="cmdLogin"><p></p>
    <asp:Label id="lblMsg" ForeColor="red" Font-Name="Verdana" Font-Size="10" runat="server" />
    						
    此 Web 窗體用于向用戶提供登錄窗體,以便他們提供用于登錄到應(yīng)用程序的用戶名和密碼。
  4. 切換到“設(shè)計(jì)”視圖并保存該頁。

對(duì)事件處理程序進(jìn)行編碼以使它驗(yàn)證用戶憑據(jù)

本節(jié)給出位于代碼隱藏頁 (Logon.aspx.cs) 中的代碼。

  1. 雙擊“Logon”打開 Logon.aspx.cs 文件。
  2. 導(dǎo)入代碼隱藏文件中必需的命名空間:
    using System.Data.SqlClient;
    using System.Web.Security;
    					
  3. 創(chuàng)建 ValidateUser 函數(shù),以便通過查找數(shù)據(jù)庫來驗(yàn)證用戶憑據(jù)。(確保將連接字符串更改為指向數(shù)據(jù)庫。)
    private bool ValidateUser( string userName, string passWord )
    {
    	SqlConnection conn;
    	SqlCommand cmd;
    	string lookupPassword = null;
    
    	// Check for invalid userName.
    	// userName must not be null and must be between 1 and 15 characters.
    	if ( (  null == userName ) || ( 0 == userName.Length ) || ( userName.Length > 15 ) )
    	{
    		System.Diagnostics.Trace.WriteLine( "[ValidateUser] Input validation of userName failed." );
    		return false;
    	}
    
    	// Check for invalid passWord.
    	// passWord must not be null and must be between 1 and 25 characters.
    	if ( (  null == passWord ) || ( 0 == passWord.Length ) || ( passWord.Length > 25 ) )
    	{
    		System.Diagnostics.Trace.WriteLine( "[ValidateUser] Input validation of passWord failed.&qu
                        

服務(wù)熱線

153 8323 9821

功能和特性

價(jià)格和優(yōu)惠

網(wǎng)站和維護(hù)

推廣和優(yōu)化

微信服務(wù)號(hào)