Share via


HOW TO:建立 WindowsPrincipal 物件

建立 WindowsPrincipal 物件的方式有兩種:根據程式碼是否必須重複執行以角色為基礎的驗證,或是必須只執行一次驗證而定。

如果程式碼必須重複執行以角色為基礎的驗證,下列第一種程序所產生的負荷會較少。 當程式碼必須只執行一次以角色為基礎的驗證時,您可以執行下列第二種程序,建立 WindowsPrincipal 物件。

若要為重複執行的驗證建立 WindowsPrincipal 物件

  1. 在由靜態 AppDomain.CurrentDomain 屬性所傳回的 AppDomain 物件上,呼叫 SetPrincipalPolicy 方法,傳遞 PrincipalPolicy 列舉值給方法,指出新原則應該為何。 支援的值為 NoPrincipalUnauthenticatedPrincipalWindowsPrincipal。 下列程式碼將示範這個方法呼叫。

    AppDomain.CurrentDomain.SetPrincipalPolicy(
        PrincipalPolicy.WindowsPrincipal);
    
    AppDomain.CurrentDomain.SetPrincipalPolicy( _
        PrincipalPolicy.WindowsPrincipal)
    
  2. 原則設定之後,請使用 Thread.CurrentPrincipal 屬性,以擷取封裝目前 Windows 使用者的主體。 由於屬性傳回型別是 IPrincipal,您必須將結果轉換為 WindowsPrincipal 型別。 下列程式碼將新的 WindowsPrincipal 物件初始化為與目前執行緒相關聯之主體的值。

    WindowsPrincipal MyPrincipal = 
        (WindowsPrincipal) Thread.CurrentPrincipal;
    
    Dim MyPrincipal As WindowsPrincipal = _
        CType(Thread.CurrentPrincipal, WindowsPrincipal) 
    
  3. 在主體物件建立之後,您可以使用許多方法中的一個來驗證它。 如需詳細資訊,請參閱以角色為基礎的安全性檢查

若要為單一執行的驗證建立 WindowsPrincipal 物件

  1. 透過呼叫 WindowsIdentity.GetCurrent 方法,初始化新的 WindowsIdentity 物件,它會查詢目前的 Windows 帳戶,並將有關該帳戶的資訊置入新建立的 identity 物件。 下列程式碼會建立新的 WindowsIdentity 物件,並將它初始化為目前通過驗證的使用者。

    WindowsIdentity MyIdentity = WindowsIdentity.GetCurrent();
    
    Dim MyIdentity As WindowsIdentity = WindowsIdentity.GetCurrent()
    
  2. 建立新的 WindowsPrincipal 物件,並將在上一個步驟中所建立 WindowsIdentity 物件的值傳遞給它。

    WindowsPrincipal MyPrincipal = new WindowsPrincipal(MyIdentity);
    
    Dim MyPrincipal As New WindowsPrincipal(MyIdentity)
    
  3. 在主體物件建立之後,您可以使用許多方法中的一個來驗證它。 如需詳細資訊,請參閱以角色為基礎的安全性檢查

請參閱

概念

Principal 和 Identity 物件