下面是驗證的過程:
//取得當前線程的principal對象 IPrincipal principal = Thread.CurrentPrincipal;
if (!principal.Identity.Name.Equals("TrustedUser")) { throw new SecurityException( strUserName + " NOT PERMITTED to proceed.\n"); } Console.WriteLine( strUserName + " is PERMITTED to proceed.\n");
WindowsPrincipal類
WindowsPrincipal類作為我們在開發中最常遇到的實現了IPrincipal接口的類,構造函數相當簡單:
public WindowsPrincipal(WindowsIdentity ntIdentity);
下面的代碼說明了如何創建一個WindowsPrincipal對象:
WindowsIdentity wi = WindowsIdentity.GetCurrent(); WindowsPrincipal wp = new WindowsPrincipal(wi);
WindowsPrincipal類中需要注意的是下面這三個重載的IsInRole方法:
public virtual bool IsInRole(int);
第1個重載函數接受一個整型參數,該參數表示用戶組對應的RID(RID也就是與域相關聯的下級憑證(domain-relative subauthority)ID)。RID值定義在Platform SDK的頭文件Winnt.h中,Winnt.h中包括一些常見的用戶和組,比如DOMAIN_USER_RID_ADMIN、 DOMAIN_USER_RID_GUEST、DOMAIN_GROUP_RID_ADMINS、DOMAIN_GROUP_RID_USERS和DOMAIN_GROUP_RID_GUESTS等等,可以在...\Microsoft Visual Studio .NET\Vc7\PlatformSDK\Include文件夾中找到該文件。
public virtual bool IsInRole(string);
第2個重載函數接受一個字符串參數,該參數表示一個用戶組名稱,比如MYCOMPUTER\Developer(MachineName\GroupName)表示了機器名為MYCOMPUTER的計算機上的Developer用戶組。不過對于系統內置的用戶組就不能這樣表示了,比如Administrators,不能表示為MYCOMPUTER\Administrators,而應該像BUILTIN\Administrators這樣,不過這樣總覺得有點多余,不夠自然。于是我們可以使用下面的重載函數。
public virtual bool IsInRole(WindowsBuiltInRole);
第3個重載函數接受一個WindowsBuiltInRole枚舉類型參數,下面就是WindowsBuiltInRole枚舉中定義的值:
文章來源于領測軟件測試網 http://www.kjueaiud.com/