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

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

ロール サービスを使用するように構成されている Windows フォーム アプリケーションで、認証済みユーザーのユーザー ロール情報にアクセスする方法を、次の手順で説明します。 詳細については、「方法 : クライアント アプリケーション サービスを構成する」を参照してください。 この手順では、実行中の Microsoft 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 の期限が切れた場合は常に再度ログオンすることをユーザーに要求する] をオンにしている場合にのみ必要です。 詳細については、「方法 : クライアント アプリケーション サービスを構成する」を参照してください。

参照

処理手順

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

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

参照

ClientRoleProvider

Thread.CurrentPrincipal

IPrincipal.IsInRole

概念

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

Microsoft Ajax でのロール情報の使用

その他の技術情報

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