ClientFormsIdentity 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示使用窗體驗證為用戶端應用程式服務驗證的使用者身分識別。
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 方法僅供方便使用。 因為它沒有傳回值,所以無法指出重新驗證是否失敗。 例如,如果使用者認證在伺服器上已變更,重新驗證可能會失敗。 在此情況下,您可能會想要包含在服務呼叫失敗之後明確驗證使用者的程序代碼。 如需詳細資訊,請參閱
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
備註
用戶端應用程式服務功能會使用此類別來代表已驗證的使用者。 當您將應用程式設定為使用用戶端應用程式服務和窗體驗證時,您可以呼叫 static
Membership.ValidateUser 方法來驗證使用者。 驗證之後,您可以透過透過透過 static
Thread.CurrentPrincipal 屬性擷取 IPrincipal 的 Identity 屬性,擷取目前 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) |