共用方式為


作法:建立 WindowsPrincipal 物件

注意

本文適用於 Windows。

如需 ASP.NET Core 的相關資訊,請參閱 ASP.NET Core 安全性

有兩種方式來建立 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 帳戶,將該帳戶的相關資訊放入新建立的身分識別物件。 下列程式碼會建立新的 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. 建立主體物件之後,您可以數種方法的其中一種來進行驗證。

另請參閱