共用方式為


ClientFormsIdentity 類別

定義

表示使用窗體驗證為用戶端應用程式服務驗證的使用者身分識別。

public ref class ClientFormsIdentity : IDisposable, System::Security::Principal::IIdentity
public class ClientFormsIdentity : IDisposable, System.Security.Principal.IIdentity
type ClientFormsIdentity = class
    interface IIdentity
    interface IDisposable
Public Class ClientFormsIdentity
Implements IDisposable, IIdentity
繼承
ClientFormsIdentity
實作

範例

下列範例程式代碼示範如何在應用程式離開離線狀態時,使用這個類別以無訊息方式重新驗證使用者。 在此範例中,CheckedChanged 事件處理程式會更新離線狀態,以符合複選框值。 如果使用者將應用程式設定為在線狀態,事件處理程式會呼叫 RevalidateUser 方法,嘗試重新驗證使用者。 不過,如果驗證伺服器無法使用,事件處理程式會將應用程式傳回離線狀態。

注意

RevalidateUser 方法僅供方便使用。 因為它沒有傳回值,所以無法指出重新驗證是否失敗。 例如,如果使用者認證在伺服器上已變更,重新驗證可能會失敗。 在此情況下,您可能會想要包含在服務呼叫失敗之後明確驗證使用者的程序代碼。 如需詳細資訊,請參閱 逐步解說:使用用戶端應用程式服務一節中的<存取 Web 設定>一節。

private void workOfflineCheckBox_CheckedChanged(
    object sender, EventArgs e)
{
    ConnectivityStatus.IsOffline = workOfflineCheckBox.Checked;
    if (!ConnectivityStatus.IsOffline)
    {
        try
        {
            // Silently re-validate the user.
            ((ClientFormsIdentity)
                System.Threading.Thread.CurrentPrincipal.Identity)
                .RevalidateUser();

            // If any settings have been changed locally, save the new
            // new values to the Web settings service.
            SaveSettings();

            // If any settings have not been changed locally, check 
            // the Web settings service for updates. 
            Properties.Settings.Default.Reload();
        }
        catch (System.Net.WebException)
        {
            MessageBox.Show(
                "Unable to access the authentication service. " +
                Environment.NewLine + "Staying in offline mode.",
                "Warning", MessageBoxButtons.OK, 
                MessageBoxIcon.Warning);
            workOfflineCheckBox.Checked = true;
        }
    }
}
Private Sub workOfflineCheckBox_CheckedChanged( _
    ByVal sender As Object, ByVal e As EventArgs) _
    Handles workOfflineCheckBox.CheckedChanged

    ConnectivityStatus.IsOffline = workOfflineCheckBox.Checked
    If Not ConnectivityStatus.IsOffline Then

        Try

            ' Silently re-validate the user.
            CType(System.Threading.Thread.CurrentPrincipal.Identity,  _
                ClientFormsIdentity).RevalidateUser()

            ' If any settings have been changed locally, save the new
            ' new values to the Web settings service.
            SaveSettings()

            ' If any settings have not been changed locally, check 
            ' the Web settings service for updates. 
            My.Settings.Reload()

        Catch ex As System.Net.WebException

            MessageBox.Show( _
                "Unable to access the authentication service. " & _
                Environment.NewLine + "Staying in offline mode.", _
                "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            workOfflineCheckBox.Checked = True

        End Try

    End If
End Sub

備註

用戶端應用程式服務功能會使用此類別來代表已驗證的使用者。 當您將應用程式設定為使用用戶端應用程式服務和窗體驗證時,您可以呼叫 staticMembership.ValidateUser 方法來驗證使用者。 驗證之後,您可以透過透過透過 staticThread.CurrentPrincipal 屬性擷取 IPrincipalIdentity 屬性,擷取目前 ClientFormsIdentity 實例的參考。 如需詳細資訊,請參閱 用戶端應用程式服務

您通常會以 IIdentity 參考的形式存取 ClientFormsIdentity 物件,以避免直接相依於這個類別。 您可以藉由檢查身分識別的 IIdentity.IsAuthenticated 屬性來判斷使用者是否已通過驗證。 不過,使用者可能已針對 Windows 進行驗證,但不適用於用戶端應用程式服務。 若要判斷使用者是否已針對用戶端應用程式服務進行驗證,您也應該確認 IIdentity.AuthenticationType 屬性值為 “ClientForms”。

您必須使用明確的 ClientFormsIdentity 參考來呼叫 RevalidateUser 方法,而 IIdentity 介面未定義此方法。

建構函式

ClientFormsIdentity(String, String, MembershipProvider, String, Boolean, CookieContainer)

初始化 ClientFormsIdentity 類別的新實例。

屬性

AuthenticationCookies

取得從驗證服務擷取的Cookie集合。

AuthenticationType

取得用來驗證使用者的驗證類型。

IsAuthenticated

取得值,指出使用者是否已通過驗證。

Name

取得用戶的名稱。

Provider

取得用來驗證用戶的成員資格提供者。

方法

Dispose()

釋放 ClientFormsIdentity所使用的所有資源。

Dispose(Boolean)

釋放 ClientFormsIdentity 所使用的 Unmanaged 資源,並選擇性地釋放 Managed 資源。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetType()

取得目前實例的 Type

(繼承來源 Object)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
RevalidateUser()

使用快取認證以無訊息方式驗證使用者。

ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)

適用於

另請參閱