更新:2007 年 11 月
ASP.NET 角色管理能夠讓您的 ASP.NET 應用程式輕鬆地使用數種不同的角色提供者。您可以使用 .NET Framework 所提供的設定檔提供者,或是實作自己的提供者。
建立自訂角色提供者有兩個主要原因。
若要實作角色提供者,請建立繼承自 System.Web.Security 命名空間之 RoleProvider 抽象類別的類別。RoleProvider 抽象類別繼承自 System.Configuration.Provider 命名空間的 ProviderBase 抽象類別。因此,您也必須實作 ProviderBase 類別的必要成員。下表列出您必須從 ProviderBase 和 RoleProvider 抽象類別實作的必要屬性和方法,以及每個屬性和方法的說明。若要檢閱每位成員的實作,請參閱提供給角色提供者實作範例的程式碼。
ProviderBase 成員
RoleProvider 成員
角色提供者會為每個應用程式存放唯一的角色資訊。當使用者名稱重複時,這能夠讓多個 ASP.NET 應用程式在不發生衝突的情況下使用相同資料來源。此外,多個 ASP.NET 應用程式可以藉由指定相同的 ApplicationName,使用相同的角色資料來源。
因為角色提供者會為每個應用程式存放唯一的角色資訊,所以需要確定資料結構描述包含應用程式名稱,而且查詢和更新也需要包含應用程式名稱。例如,下列命令是用來擷取資料庫中的角色名稱,並且確定查詢中包含 ApplicationName。
SELECT Rolename FROM Roles
WHERE Rolename = 'Administrators' AND ApplicationName = 'MyApplication'
針對應用程式組態中指定的每個角色提供者,ASP.NET 會產生單一角色提供者執行個體,用以處理由 HttpApplication 物件所處理的所有要求。因此,您可以同時執行多個要求。ASP.NET 並不確保對提供者呼叫的執行緒安全。您需要撰寫提供者程式碼,確保執行緒安全。例如,您應該在呼叫的成員 (例如 AddUsersToRoles) 中建立資料庫連接或開啟要編輯的檔案,而不是當呼叫 Initialize 方法時開啟檔案或資料庫連接。
概念
其他資源