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