方法 : クライアント アプリケーション サービスでユーザー ロールにアクセスする
クライアント アプリケーション サービスを使用して、既存の 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 の期限が切れた場合は常に再度ログオンすることをユーザーに要求する] をオンにしている場合にのみ必要です。 詳細については、「方法 : クライアント アプリケーション サービスを構成する」を参照してください。
参照
処理手順
方法 : クライアント アプリケーション サービスを構成する
チュートリアル : クライアント アプリケーション サービスの使用