方法 : クライアント アプリケーション サービスでユーザー ロールにアクセスする

更新 : 2007 年 11 月

クライアント アプリケーション サービスを使用して、既存の ASP.NET AJAX ロール サービスからロール情報を取得できます。ロール サービスの設定方法の詳細については、「ASP.NET AJAX でのロール情報の使用」を参照してください。

ロール サービスを使用するように構成されている Windows フォーム アプリケーションで、認証済みユーザーのユーザー ロール情報にアクセスする方法を、次の手順で説明します。詳細については、「方法 : クライアント アプリケーション サービスを構成する」を参照してください。この手順では、実行中の ASP.NET AJAX ロール サービスへのアクセスが必要です。クライアント アプリケーション サービス機能の全体的なテストのガイダンスについては、「チュートリアル : クライアント アプリケーション サービスの使用」を参照してください。

ユーザーが特定のロールに属すかどうかを判断するには

  • static Thread.CurrentPrincipal プロパティから取得された IPrincipal 参照の IsInRole メソッドを呼び出します。このメソッドは、Boolean 値を返します。この値を使用して、次の例に示すように特定の機能にアクセスできるようにします。ユーザーが認証されない場合、または指定されたロールに属していない場合、このメソッドは false を返します。

    IsInRole メソッドは、内部的に ClientRoleProvider クラスを介してリモート ロール サービスにアクセスします。ClientRoleProvider クラスには直接アクセスできますが、通常は、次のコード例に見られるように、間接的にアクセスします。詳細については、「クライアント アプリケーション サービスの概要」を参照してください。

    次のコード例は、アプリケーションに managerOnlyButton という名前の Button が含まれていることを前提とします。

    If System.Threading.Thread.CurrentPrincipal.IsInRole("manager") Then
    
        managerOnlyButton.Visible = True
    
    End If
    
    if (System.Threading.Thread.CurrentPrincipal.IsInRole("manager"))
    {
        managerOnlyButton.Visible = true;
    }
    

堅牢性の高いプログラム

このトピックでは、Windows クライアント アプリケーションで最も単純なロール サービスを使用するコード例を示します。クライアント アプリケーション サービスを介してユーザー ロールにアクセスする場合、サービスが使用できないときには WebException をスローできます。このような場合の WebException の処理方法の例については、「チュートリアル : クライアント アプリケーション サービスの使用」を参照してください。

さらに、ユーザー ログインの期限が切れている場合には IsInRole メソッドは必ず false を返します。これは、アプリケーションの認証直後に IsInRole メソッドを呼び出した場合には発生しません。アプリケーションで、それ以外のときにユーザー ロールを取得する必要がある場合には、ログインの期限が切れているユーザーを再検証するコードを追加します。有効なすべてのユーザーがロールに割り当てられている場合には、ClientRoleProvider.GetRolesForUser メソッドを呼び出すことにより、ログインの期限が切れているかどうかを判断することができます。ロールが返されない場合には、ログインの期限が切れています。この機能の例については、GetRolesForUser メソッドのトピックを参照してください。この機能は、アプリケーション構成で [サーバー Cookie の期限が切れた場合は常に再度ログオンすることをユーザーに要求する] をオンにしている場合にのみ必要です。詳細については、「方法 : クライアント アプリケーション サービスを構成する」を参照してください。

参照

処理手順

方法 : クライアント アプリケーション サービスを構成する

チュートリアル : クライアント アプリケーション サービスの使用

概念

クライアント アプリケーション サービスの概要

ASP.NET AJAX でのロール情報の使用

参照

ClientRoleProvider

Thread.CurrentPrincipal

IPrincipal.IsInRole

その他の技術情報

クライアント アプリケーション サービス