Roles.Provider プロパティ
アセンブリ: System.Web (system.web.dll 内)
構文
RoleProvider 抽象クラスを継承するクラスとして公開される、アプリケーションの既定のロール プロバイダ。
解説
Provider プロパティによって、アプリケーションの既定のロール プロバイダを直接参照できます。これは、RoleProvider 抽象クラスに属していないロール プロバイダのカスタム メンバにアクセスするために一般的に使用されます。
たとえば、WindowsTokenRoleProvider クラスには、WindowsBuiltInRole 列挙値を使用してユーザーが共通 Windows ロールにあるかどうかを確認するための IsUserInRole メソッドのオーバーロードが含まれます。アプリケーションの WindowsTokenRoleProvider クラスへの参照は、Provider プロパティを使用して取得でき、IsUserInRole オーバーロードを参照するために WindowsTokenRoleProvider としてキャストできます。
アプリケーションに複数のロール プロバイダが構成されている場合、Providers コレクションを使用して異なるロール プロバイダにアクセスできます。
既定のロール プロバイダを WindowsTokenRoleProvider としてキャストし、現在ログオンしているユーザーが Administrators ロールに属しているかどうかをチェックした後でないと、ユーザーにアプリケーションのロール設定の参照を許可しないコード例を次に示します。ロール管理を有効にする Web.config ファイルの例については、WindowsTokenRoleProvider のトピックを参照してください。
<%@ Page Language="VB" %> <%@ Import Namespace="System.Web.Security" %> <script runat="server"> Dim rolesArray() As String Public Sub Page_Load() Msg.Text = "" Dim provider As WindowsTokenRoleProvider = CType(Roles.Provider, WindowsTokenRoleProvider) If Not provider.IsUserInRole(User.Identity.Name, _ System.Security.Principal.WindowsBuiltInRole.Administrator) Then Msg.Text = "You are not authorized to view user roles." Return End If ' Bind roles to GridView. Try rolesArray = Roles.GetRolesForUser(User.Identity.Name) Catch e As HttpException Msg.Text = "There is no current logged on user. Role membership cannot be verified." Return End Try UserRolesGrid.DataSource = rolesArray UserRolesGrid.DataBind() UserRolesGrid.Columns(0).HeaderText = "Roles for " & User.Identity.Name End Sub </script> <html> <head> <title>Sample: View User Roles</title> </head> <body> <form runat="server" id="PageForm"> <h3>View User Roles</h3> <asp:Label id="Msg" ForeColor="maroon" runat="server" /><BR> <table border="0" cellspacing="4"> <tr> <td valign="top"><asp:GridView runat="server" CellPadding="4" id="UserRolesGrid" AutoGenerateColumns="false" Gridlines="None" CellSpacing="0" > <HeaderStyle BackColor="navy" ForeColor="white" /> <Columns> <asp:TemplateField HeaderText="Roles" runat="server" > <ItemTemplate> <%# Container.DataItem.ToString() %> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView></td> </tr> </table> </form> </body> </html>
<%@ Page Language="C#" %> <%@ Import Namespace="System.Web.Security" %> <%@ Import Namespace="System.Security.Principal" %> <script runat="server"> string[] rolesArray; public void Page_Load() { Msg.Text = ""; WindowsPrincipal p = (WindowsPrincipal)System.Threading.Thread.CurrentPrincipal; if (!p.IsInRole(WindowsBuiltInRole.Administrator)) { Msg.Text = "You are not authorized to view user roles."; return; } // Bind roles to GridView. try { rolesArray = Roles.GetRolesForUser(User.Identity.Name); } catch (HttpException e) { Msg.Text = "There is no current logged on user. Role membership cannot be verified."; return; } UserRolesGrid.DataSource = rolesArray; UserRolesGrid.DataBind(); UserRolesGrid.Columns[0].HeaderText = "Roles for " + User.Identity.Name; } </script> <html> <head> <title>Sample: View User Roles</title> </head> <body> <form runat="server" id="PageForm"> <h3>View User Roles</h3> <asp:Label id="Msg" ForeColor="maroon" runat="server" /><BR> <table border="0" cellspacing="4"> <tr> <td valign="top"><asp:GridView runat="server" CellPadding="4" id="UserRolesGrid" AutoGenerateColumns="false" Gridlines="None" CellSpacing="0" > <HeaderStyle BackColor="navy" ForeColor="white" /> <Columns> <asp:TemplateField HeaderText="Roles" runat="server" > <ItemTemplate> <%# Container.DataItem.ToString() %> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView></td> </tr> </table> </form> </body> </html>
Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
- Roles.Provider プロパティのページへのリンク