ClientFormsIdentity.RevalidateUser 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
使用快取的認證,以無訊息模式驗證使用者。
public:
void RevalidateUser();
public void RevalidateUser ();
member this.RevalidateUser : unit -> unit
Public Sub RevalidateUser ()
範例
下列範例程式代碼示範如何在應用程式離開離線狀態時,使用此方法以無訊息方式重新驗證使用者。 在此範例中 CheckedChanged ,事件處理程式會更新離線狀態,以符合複選框值。 如果使用者將應用程式設定為在線狀態,事件處理程式會嘗試重新驗證使用者。 不過,如果驗證伺服器無法使用,事件處理程式會將應用程式傳回離線狀態。
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
備註
當您使用窗體驗證來驗證目前的使用者時,只要應用程式正在執行,類別 ClientFormsIdentity 就會儲存用戶認證。 不過,使用者只會經過驗證,直到驗證 Cookie 到期為止。 Cookie 到期之後,必須重新驗證使用者才能存取遠端角色或 Web 設定服務。 您可以使用 [服務進階設定 ] 對話框來設定應用程式,以自動重新驗證使用者。 不過,如果您將應用程式設定為接受 Cookie 到期,您可以呼叫 RevalidateUser 方法來以程式設計方式重新驗證使用者。 這個方法在從離線模式切換至在線模式時也很有用,因為應用程式在離線時可能已經關閉。
注意
RevalidateUser 方法只是為了方便而使用。 因為它沒有傳回值,所以無法表示重新驗證是否失敗。 例如,如果在伺服器上的使用者認證已變更,重新驗證就可能會失敗。 在這種情況下,您可能想要加入在服務呼叫失敗之後能夠明確驗證使用者的程式碼。 For more information, see the Accessing Web Settings section in Walkthrough: Using Client Application Services.