共用方式為


逐步解說:使用角色管理網站使用者

更新:2007 年 11 月

許多 ASP.NET 應用程式涉及成員資格,許多 ASP.NET 應用程式涉及成員資格,即驗證使用者,以存取受限制的資源,例如,只限成員使用的網頁。如果應用程式將支援許多使用者,或是使用者清單可能會隨時間變更,請考慮建立角色以管理使用者存取。「角色」是群組的名稱,例如經理、業務員或成員。建立角色後,您可以將個別使用者指派至角色。然後,您可以對角色授與權限,則該角色中的每個使用者都將繼承您指派的權限。因此,角色是管理使用者群組之權限的有效方法。

在瀏覽這份逐步解說期間,您將瞭解如何:

  • 為應用程式建立角色。

  • 將使用者指派至角色。

  • 建立規則 (權限),其可以選擇性地授與或拒絕存取不同規則的頁面。

  • 以程式設計方式判斷使用者是否屬於特定角色以及目前使用者屬於何種角色。

必要條件

若要完成這個逐步解說,您必須要有:

  • Visual Studio。

  • .NET Framework。

  • IIS 已安裝在本機電腦。

  • SQL Server Express Edition 已安裝在本機電腦。

  • 識別個別使用者的方法。

    注意事項:

    在工作應用程式中,您可以使用各種方式識別使用者,包括依據其 Windows 使用者帳戶進行識別。但是,在此逐步解說中,使用者將透過登入您的網站來對其本身進行識別。因此,此逐步解說要求您將網站設定為使用 ASP.NET 成員資格。如果您的某個網站已經設定為使用成員資格,則可以使用該網站做為此逐步解說的起點。

設定網站、成員資格和角色

在您使用 ASP.NET 角色之前,必須具有可用的網站,並且將該網站設定為啟用成員資格,然後設定使用者角色。如果您已完成主題逐步解說:建立具有成員資格和使用者登入的網站,則可以使用在該逐步解說中設定的網站。

如果您尚未有可用的網站,請使用下列程序建立一個網站。否則,請繼續進行下一節的步驟<為只限成員使用的網頁建立資料夾>。

若要建立本機 IIS 網站

  1. 開啟 Visual Studio。

  2. 在 [檔案] 功能表上,按一下 [新網站]。

    [新網站] 對話方塊隨即出現。

  3. 請在 [Visual Studio 安裝的範本] 下方,選取 [ASP.NET 網站]。

  4. 在 [位置] 清單方塊中,選取 [檔案系統]。

  5. 按一下 [瀏覽],然後為您的應用程式選取目錄,例如 C:\RolesWebSite。

  6. 在 [語言] 方塊中,按一下您想要使用的程式語言。

    您選擇的程式語言將變成網站的預設值,但您可以為每個網頁分別設定程式語言。

  7. 在 [新網站] 對話方塊中按一下 [確定]。

    Visual Web Developer 會建立網站和名為 Default.aspx 的新網頁。

為只限成員使用的網頁建立資料夾

若要使用角色,您將需要建立兩個資料夾 MemberPages 和 GuestPages,您可以在其中儲存限制存取的網頁。

注意事項:

如果您重新使用在成員資格逐步解說的網站,則可能已經具有此資料夾,而且可以略過下列程序的步驟 1。

若要為限制存取建立資料夾

  1. 在 [方案總管] 中,以滑鼠右鍵按一下 [網站根目錄],然後按一下 [新資料夾],然後再命名資料夾為 MemberPages。

    此資料夾將包含只有某些使用者才能夠存取的網頁。

  2. 以滑鼠右鍵按一下 [網站根目錄],然後按一下 [新資料夾],再命名資料夾為 GuestPages。

    此資料夾將包含任何登入使用者都可以存取的網頁 (但不包括匿名使用者)。

為成員資格和角色設定網站

建立基本網站後,您可以將其設定為使用成員資格和角色。

若要為成員資格和角色設定網站

  1. 在 [網站] 功能表上,按一下 [ASP.NET 組態]。

  2. 選取 [安全性] 索引標籤,按一下 [使用安全性設定精靈,逐步設定安全性] 的連結,然後再按 [下一步]。

  3. 進行至精靈的「步驟 2」,選取 [從網際網路] 選項。

    精靈會顯示一個頁面,您可以在其中選取網站將要使用的驗證方法。

    此選項會指定您的應用程式將使用「表單」驗證,其中使用者會使用稍後在此逐步解說中建立之登入頁面來登入該應用程式。

  4. 按一下 [下一步]。

    精靈會顯示訊息,說明將會使用 [進階提供者設定] 儲存使用者資訊。您的應用程式會使用預設提供者,將成員資格資訊儲存在網站之 App_Data 資料夾的 SQL Server Express Edition 資料庫檔案中。

  5. 按一下 [下一步]。

  6. 在 [步驟 4: 定義角色] 中,選取 [啟用此網站的角色] 核取方塊,然後按一下 [下一步]。

  7. 當出現提示時,建立兩個角色 members 和 guests,然後按一下 [下一步]。

  8. 在 [步驟 5: 加入新的使用者] 中,建立三個名為 member1、guest1 和 memberGuest 的使用者。

    您可以指派任何您想要的強式密碼,但是確定自己要記得密碼,密碼的長度至少必須為 7 個字元,而且至少其中一個字元必須為非英數字元。您可以使用自己的電子郵件地址 (您將不會在本逐步解說中傳送電子郵件訊息)。

    注意事項:

    先不要關閉 [網站管理工具]。

您建立的網站將根據使用者的角色,允許使用者取得不同網頁的存取權。因此,您需要建立一些存取規則,以判斷哪些角色可以存取哪些資料夾。

若要為網站資料夾設定存取規則

  1. 在 [網站管理工具] 的安全性精靈中,按一下 [下一步]。

    [步驟 6: 加入新的存取規則] 會顯示一個頁面,您可以在其中建立判斷哪些角色 (或使用者) 可以存取網站中網頁的規則。

  2. 在 [選取此規則的目錄] 下方,展開根節點,然後按一下 [GuestPages]。

  3. 在 [規則套用對象] 下方,選取 [匿名使用者]。

  4. 請在 [使用權限] 下方,選取 [拒絕]。

    您正在建立的規則拒絕匿名使用者 (即,未登入的使用者) 的存取 。

  5. 按一下 [加入這個規則]。

    新規則顯示在頁面底部的方格中。當使用者要求存取 [GuestPages] 目錄中的網頁時,規則會從頂端到底部,依照順序檢查,以判斷是否允許使用者存取該網頁。如果使用者尚未登入,則此資料夾中的頁面不會顯示。

  6. 在 [選取此規則的目錄] 下方,按一下 [MemberPages]。

  7. 在 [規則套用對象] 下選取 [角色],然後在下拉式清單中按一下 [members]。

  8. 請在 [使用權限] 下方,選取 [允許]。

    您正在建立的規則會將 [MemberPages] 資料夾的存取權授與 [members] 角色中的任何使用者。

  9. 按一下 [加入這個規則]。

  10. 在 [選取此規則的目錄] 下方,按一下 [MemberPages]。

  11. 在 [規則套用對象] 下方,選取 [所有使用者]。

  12. 請在 [使用權限] 下方,選取 [拒絕]。

  13. 按一下 [加入這個規則]。

    [MemberPages] 資料夾的第二個規則確保只有 [members] 角色中的使用者可以存取資料夾。這些規則會從頂端到底部,依照順序處理,如您在方格中所見的順序。

    第一個規則 (允許) 將存取權限授與命名為成員之角色中的使用者。第二條規則 (Deny) 會拒絕對其他所有使用者的存取。您可以盡量針對應用程式建立所需要的 Allow 或 Deny 規則。當使用者在 [MemberPages] 目錄中要求網頁時,會依照由上至下的順序套用規則,以決定是否允許使用者存取網頁。

  14. 按一下 [完成] 回到 [安全性] 索引標籤。

    注意事項:

    先不要關閉 [網站管理工具]。

將使用者指派至角色

您必須執行最後一個設定步驟:將所建立的使用者指派至角色。

若要將使用者指派至角色

  1. 在 [網站管理工具] 的 [安全性] 索引標籤上,於 [使用者] 下方,按一下 [管理使用者]。

  2. 在 [guest1] 資料列中,按一下 [編輯角色]。

    [角色] 方塊中會被填入可用角色的清單。

  3. 選取 [guests] 核取方塊,將使用者 [guest1] 指派給角色 [guests]。

  4. 在 [member1] 資料列中,按一下 [編輯角色],並將使用者 [member1] 指派至角色 [members]。

  5. 使用相同的技術,將使用者 [memberGuest] 同時指派至 [guests] 和 [members] 角色。

  6. 關閉網站管理工具,然後執行下列事項:

    1. 在 [方案總管] 中,按一下 [重新整理] 圖示。

    2. 在 [網站] 功能表上,按一下 [ASP.NET 組態] 以重新啟動網站管理工具。

      如此可確保網站管理工具所使用的 Membership 資料庫連線已經關閉。

    3. 再次關閉網站管理工具。

加入限制存取的網頁

若要測試成員資格和角色設定,您需要為使用者建立登入方法,以便對其進行識別。您還必須建立一些允許您測試所建立之存取規則的 Web 網頁。

若要為所有使用者建立預設網頁

  1. 切換至 Visual Studio。

  2. 開啟或切換至 Default.aspx 頁面,然後切換至 [設計] 檢視。

    如果您沒有 Default.aspx 頁面,則加入一個到網站的根目錄。

    注意事項:

    確保將頁面命名為 Default.aspx;此名稱稍後將會在逐步解說中使用。

  3. 加入包含文字的標題,例如 Welcome!。

  4. 在 [工具箱] 的 [登入] 群組中,將 LoginStatus 控制項拖曳到網頁上。

    當按一下時,如果使用者尚未登入,則 LoginStatus 控制項會將其導向至 Login.aspx 頁面。

  5. 在 [工具箱] 的 [登入] 群組中,將 LoginName 控制項拖曳到網頁上。將 [FormatString] 屬性設定為 "Hello {0}"。

    如果使用者已登入,LoginName 控制項將顯示使用者名稱。

  6. 在 [工具箱] 的 [標準] 群組中,將 HyperLink 控制項拖曳到網頁上。在 HyperLink 控制項的 [屬性] 面板中,將 Text 屬性設定為 Guests and Members,將 href 屬性設定為 ~/GuestPages/Guests.aspx。

    注意事項:

    稍後,您將在此逐步解說中建立 [Guests.aspx] 頁面。

  7. 在 [工具箱] 的 [標準] 群組中,將另一個 HyperLink 控制項拖曳到網頁上。在 HyperLink 控制項的 [屬性] 面板中,將 Text 屬性設定為 Members,將 href 屬性設定為 ~/MemberPages/Members.aspx。

    注意事項:

    稍後,您將在此逐步解說中建立 [Members.aspx] 頁面。

您現在有所有使用者都可以使用的首頁。從這裡,使用者可以連結至其他網頁,其中一些網頁將受限制。下一步是建立簡單的登入頁面。

若要建立登入頁面

  1. 在 [方案總管] 中,以滑鼠右鍵按一下網站的根資料夾,然後選取 [加入新項目]。將名為 Login.aspx 的 [Web Form] 加入至您的網站。

  2. 在 Login.aspx 網頁中,切換至 [設計] 檢視。

  3. 在 [工具箱] 的 [登入] 群組中,將 Login 控制項拖曳到網頁上。

  4. Login 控制項的 [屬性] 面板中,將 DestinationPageUrl 屬性設定為 ~/Default.aspx。

最後,您需要建立一些表示網站之受限制內容的頁面。

若要建立受限制頁面

  1. 在 [方案總管] 中,以滑鼠右鍵按一下 [GuestPages] 資料夾,然後按一下 [加入新項目],再將名為 Guests.aspx 的 [Web Form] 加入此資料夾。

  2. 切換至 [設計] 檢視,並將標題加入至 Guests.aspx 頁面,例如 Welcome to the Guests page!。

  3. 在 [工具箱] 的 [標準] 群組中,將 HyperLink 控制項拖曳到網頁上。在 HyperLink 控制項的 [屬性] 面板中,將 Text 屬性設定為 Home,將 href 屬性設定為 ~/Default.aspx。

  4. 在 [方案總管] 中,以滑鼠右鍵按一下 [MemberPages] 資料夾,選取 [加入新項目],然後再加入名為 Members.aspx 的 [Web Form]。

  5. 切換至 [設計] 檢視,並將標題加入至 [Members.aspx] 頁面,例如 Welcome to the Members page!

  6. 在 [工具箱] 的 [標準] 群組中,將 HyperLink 控制項拖曳到網頁上。

  7. HyperLink 控制項的 [屬性] 面板中,將 Text 屬性設定為 Home,將 href 屬性設定為 ~/Default.aspx。

    您不需要將任何程式碼加入至頁面,來限制對這些頁面的存取。它們受限制是因為它們位於受存取規則保護的資料夾中。

測試角色

現在可以測試您的網站。

若要測試角色

  1. 切換至 [Default.aspx] 頁面,然後再按 CTRL+F5 執行該頁面。

  2. 按一下 [Guests and Members]。

    您將被重新導向至 [Login.aspx] 頁面,因為您正嘗試存取不允許匿名使用者存取的頁面。

  3. 以 guest1 的身分 (所屬的角色為 [guests]) 登入。

    登入成功後,您將被重新導向至 [Guests.aspx] 頁面。

    按一下 [Home],回到 [Default.aspx] 頁面。

    [Default.aspx] 頁面會在您 LoginName 控制項放置的位置,顯示文字 Hello, guest1。此外,LoginStatus 控制項已經將文字從 [登入] 變更為 [登出],因為您現在以 guest1 的身分登入。

  4. 按一下 [Guests and Members]。

    此時,因為您已經以訪客角色的使用者身分登入,所以會直接進入 Guests.aspx 網頁。

  5. 按一下 [Home],回到 [Default.aspx] 頁面。

  6. 按一下 [Members]。

    您將被重新導向至 [Login.aspx] 頁面,因為 guest1 不具有 [Members.aspx] 頁面的使用權限。

  7. 以 member1 或 memberGuest 的身分登入。

    您將被重新導向至 [Members.aspx] 頁面,因為您現在已用角色為 [members] 的使用者身分登入。

  8. 按一下 [Home],回到 [Default.aspx] 頁面。

    該頁面現在反映新的登入名稱。

後續步驟

此逐步解說說明 ASP.NET 角色管理的基本功能。您可能會想要實驗其他的角色管理功能。例如,您可能要:

請參閱

工作

逐步解說:建立具有成員資格和使用者登入的網站

逐步解說:根據安全性角色篩選網站導覽節點

概念

瞭解角色管理

參考

AuthorizationSection