建立您自己的程式碼存取使用權限
更新:2007 年 11 月
.NET Framework 提供了一組程式碼存取使用權限類別,以利保護特定的資源和作業,其中主要是針對由 .NET Framework 公開的資源。這些使用權限類別會在使用權限主題中簡單說明,而每個使用權限類別的參考文件中會有詳細的資訊。在大部分的環境下,內建的程式碼存取使用權限已足敷使用。然而,在某些情況下可能需要定義您自己的程式碼存取使用權限類別。這個主題將說明定義自訂程式碼存取使用權限類別的時機、原因和方式。
如果您正在定義的元件或類別庫會存取內建使用權限類別不包含的資源,但必須防止未經授權的程式碼使用,您應該考慮建立一個自訂程式碼存取使用權限類別。如果您希望能為自訂的使用權限設定宣告式需求,則必須也為該使用權限定義一個屬性 (Attribute) 類別。提供類別庫內的這些類別並設定使用權限需求,使 Runtime 可以防止未經授權的程式碼存取該資源,並讓管理員可以配置存取權限。
自訂使用權限也可以適用於其他情況。當內建程式碼存取使用權限類別保護資源,但對該資源並沒有足夠的控制權時,您可能需要建立一個程式碼存取使用權限。例如,應用程式可能會使用儲存有每一位員工資料的單獨檔案內的人事資料;在這種情形下,應該單獨控制不同類型員工資料的讀取和寫入動作。內部管理工具可以被授權讀取員工個人檔案的部分資料,但是不能修改這些資料區段。事實上,它可能也不被允許讀取某些資料區段。
自訂程式碼存取使用權限也適用於內建使用權限存在但並無法適當保護資源的情況下。例如,必須保護的 UI 功能 (如建立功能表的功能),但並不在內建的 UIPermission 類別保護下。這時候您可以建立一個自訂使用權限以保護建立功能表的功能。
請盡量不要重疊設定使用權限。讓一個以上的使用權限保護資源將對管理員造成一個嚴重的問題,當他們配置該資源的存取權限時必須能適當地處理所有重疊的使用權限。
實作一個自訂程式碼存取使用權限包括以下的步驟,其中幾項是選擇性的項目。每一個步驟將在個別的主題中說明。
實作 IPermission 和 IUnrestrictedPermission 介面。
如果基於效能或支援特殊的資料型別的需要,則實作 ISerializable 介面。
處理 XML 編碼和解碼。
實作 Attribute 類別以加入宣告式安全性支援。
適當地為您的使用權限要求自訂使用權限。
更新安全性原則以察覺自訂使用權限。