ClientFormsIdentity.RevalidateUser メソッド

定義

キャッシュされた資格情報を使用してユーザーを自動的に認証します。Silently authenticates the user by using cached credentials.

public:
 void RevalidateUser();
public void RevalidateUser ();
member this.RevalidateUser : unit -> unit
Public Sub RevalidateUser ()

次のコード例は、アプリケーションがオフライン状態のままになったときに、このメソッドを使用してユーザーを自動的に再検証する方法を示しています。The following example code demonstrates how to use this method to silently revalidate a user when the application leaves the offline state. この例では、 CheckedChanged イベントハンドラーは、チェックボックスの値と一致するようにオフラインステータスを更新します。In this example, a CheckedChanged event handler updates the offline status to match the check box value. ユーザーがアプリケーションをオンライン状態に設定すると、イベントハンドラーはユーザーの再検証を試みます。If the user sets the application to the online state, the event handler attempts to revalidate the user. ただし、認証サーバーが使用できない場合は、イベントハンドラーによって、アプリケーションがオフライン状態に戻ります。However, if the authentication server is unavailable, the event handler returns the application to the offline state.

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 アプリケーションが実行されている限り、ユーザーの資格情報を格納します。When you use forms authentication to validate the current user, the ClientFormsIdentity class stores the user credentials as long as the application is running. ただし、ユーザーは認証 cookie の有効期限が切れるまで認証されます。However, the user is only authenticated until the authentication cookie expires. Cookie の有効期限が切れた後、リモートロールまたは Web 設定サービスにアクセスするには、ユーザーを再検証する必要があります。After the cookie expires, the user must be revalidated to access the remote roles or Web settings services. [ サービスの詳細設定 ] ダイアログボックスを使用して、「 How To: configure Client アプリケーションサービス」の説明に従って、ユーザーを自動的に再検証するようにアプリケーションを構成できます。You can use the Advanced Settings for Services dialog box to configure your application to automatically revalidate the user, as described in How to: Configure Client Application Services. ただし、cookie の有効期限を受け入れるようにアプリケーションを構成した場合は、メソッドを呼び出すことによって、プログラムによってユーザーを再検証することができ RevalidateUser ます。However, if you configure your application to honor the cookie expiration, you can programmatically revalidate the user by calling the RevalidateUser method. この方法は、オフラインモードからオンラインモードに切り替える場合にも役立ちます。これは、アプリケーションがオフラインでシャットダウンされた可能性があるためです。This method is also useful when switching from offline mode to online mode, because the application may have been shut down while offline.

注意

RevalidateUser メソッドは便宜的なものに過ぎません。The RevalidateUser method is for convenience only. このメソッドには戻り値がないため、再検証が失敗したかどうかを示すことはできません。Because it does not have a return value, it cannot indicate whether revalidation has failed. 再検証は失敗することがあります。たとえば、サーバーでユーザーの資格情報が変更された場合などです。Revalidation can fail, for example, if the user credentials have changed on the server. この場合、サービスの呼び出しが失敗した後に、明示的にユーザーを検証するコードを含めることができます。In this case, you might want to include code that explicitly validates users after a service call fails. 詳細については、「 チュートリアル: クライアントアプリケーションサービスの使用」の「Web 設定へのアクセス」セクションを参照してください。For more information, see the Accessing Web Settings section in Walkthrough: Using Client Application Services.

適用対象

こちらもご覧ください