次の方法で共有


ClientFormsIdentity.RevalidateUser メソッド

定義

キャッシュされた資格情報を使用してユーザーを自動的に認証します。

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 メソッドは便宜的なものに過ぎません。 このメソッドには戻り値がないため、再検証が失敗したかどうかを示すことはできません。 再検証は失敗することがあります。たとえば、サーバーでユーザーの資格情報が変更された場合などです。 この場合、サービスの呼び出しが失敗した後に、明示的にユーザーを検証するコードを含めることができます。 詳細については、「 チュートリアル: クライアント アプリケーション サービスの使用」の「Web 設定へのアクセス」セクションを参照してください。

適用対象

こちらもご覧ください