作法:建立 WindowsPrincipal 物件
有兩種方式來建立 WindowsPrincipal 物件,視程式碼是否必須重複執行以角色為基礎的驗證,還是它只必須執行一次而定。
如果程式碼必須重複執行以角色為基礎的驗證,下列程序的第一個會產生較少負荷。 程式碼只需要進行一次以角色為基礎的驗證時,您可以使用下列程序的第二個來建立 WindowsPrincipal 物件。
建立 WindowsPrincipal 物件以進行重複驗證
對由靜態 AppDomain.CurrentDomain 屬性傳回的 AppDomain 物件呼叫 SetPrincipalPolicy 方法,並傳遞 PrincipalPolicy 列舉值給方法,指出新的原則應該是什麼。 支援的值為 NoPrincipal、UnauthenticatedPrincipal 和 WindowsPrincipal。 下列程式碼可示範這項方法呼叫。
AppDomain.CurrentDomain.SetPrincipalPolicy( PrincipalPolicy.WindowsPrincipal);
AppDomain.CurrentDomain.SetPrincipalPolicy( _ PrincipalPolicy.WindowsPrincipal)
設定原則後,請使用靜態 Thread.CurrentPrincipal 屬性來擷取封裝目前 Windows 使用者的主體。 由於屬性傳回型別是 IPrincipal,您必須將結果轉換為 WindowsPrincipal 類型。 下列程式碼會將新的 WindowsPrincipal 物件初始化為與目前執行緒相關聯之主體的值。
WindowsPrincipal myPrincipal = (WindowsPrincipal) Thread.CurrentPrincipal;
Dim myPrincipal As WindowsPrincipal = _ CType(Thread.CurrentPrincipal, WindowsPrincipal)
建立主體物件之後,您可以數種方法的其中一種來進行驗證。
建立 WindowsPrincipal 物件以進行單一驗證
藉由呼叫靜態 WindowsIdentity.GetCurrent 方法初始化新的 WindowsIdentity 物件,此方法會查詢目前的 Windows 帳戶,將該帳戶的相關資訊放入新建立的身分識別物件。 下列程式碼會建立新的 WindowsIdentity 物件,並將其初始化為目前已驗證的使用者。
WindowsIdentity myIdentity = WindowsIdentity.GetCurrent();
Dim myIdentity As WindowsIdentity = WindowsIdentity.GetCurrent()
建立新的 WindowsPrincipal 物件,並傳遞在上一個步驟中建立之 WindowsIdentity 物件的值給它。
WindowsPrincipal myPrincipal = new WindowsPrincipal(myIdentity);
Dim myPrincipal As New WindowsPrincipal(myIdentity)
建立主體物件之後,您可以數種方法的其中一種來進行驗證。