RolePrincipal.IsInRole(String) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得值,指出 RolePrincipal 表示的使用者是否在指定的角色中。
public:
virtual bool IsInRole(System::String ^ role);
public:
override bool IsInRole(System::String ^ role);
public bool IsInRole (string role);
public override bool IsInRole (string role);
abstract member IsInRole : string -> bool
override this.IsInRole : string -> bool
override this.IsInRole : string -> bool
Public Function IsInRole (role As String) As Boolean
Public Overrides Function IsInRole (role As String) As Boolean
參數
- role
- String
要搜尋的角色。
傳回
如果 RolePrincipal 表示的使用者在指定的角色中,則為 true
,否則為 false
。
實作
例外狀況
Identity 屬性為 null
。
範例
下列程式代碼範例會先檢查登入的使用者是否在系統管理員角色中,再允許用戶檢視使用者角色。
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
string[] rolesArray;
MembershipUserCollection users;
public void Page_Load()
{
Msg.Text = "";
if (!User.IsInRole("Administrators"))
{
Msg.Text = "You are not authorized to view user roles.";
UsersListBox.Visible = false;
return;
}
if (!IsPostBack)
{
// Bind users to ListBox.
users = Membership.GetAllUsers();
UsersListBox.DataSource = users;
UsersListBox.DataBind();
}
// If a user is selected, show the roles for the selected user.
if (UsersListBox.SelectedItem != null)
{
// Bind roles to GridView.
rolesArray = Roles.GetRolesForUser(UsersListBox.SelectedItem.Value);
UserRolesGrid.DataSource = rolesArray;
UserRolesGrid.DataBind();
UserRolesGrid.Columns[0].HeaderText = "Roles for " + UsersListBox.SelectedItem.Value;
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<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:ListBox id="UsersListBox" DataTextField="Username"
Rows="8" AutoPostBack="true" runat="server" /></td>
<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" >
<ItemTemplate>
<%# Container.DataItem.ToString() %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView></td>
</tr>
</table>
</form>
</body>
</html>
<%@ Page Language="VB" %>
<%@ Import Namespace="System.Web.Security" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Dim rolesArray() As String
Dim users As MembershipUserCollection
Public Sub Page_Load()
Msg.Text = ""
If Not User.IsInRole("Administrators") Then
Msg.Text = "You are not authorized to view user roles."
UsersListBox.Visible = False
Return
End If
If Not IsPostBack Then
' Bind users to ListBox.
users = Membership.GetAllUsers()
UsersListBox.DataSource = users
UsersListBox.DataBind()
End If
' If a user is selected, show the roles for the selected user.
If Not UsersListBox.SelectedItem Is Nothing Then
' Bind roles to GridView.
rolesArray = Roles.GetRolesForUser(UsersListBox.SelectedItem.Value)
UserRolesGrid.DataSource = rolesArray
UserRolesGrid.DataBind()
UserRolesGrid.Columns(0).HeaderText = "Roles for " & UsersListBox.SelectedItem.Value
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<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:ListBox id="UsersListBox" DataTextField="Username"
Rows="8" AutoPostBack="true" runat="server" /></td>
<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" >
<ItemTemplate>
<%# Container.DataItem.ToString() %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView></td>
</tr>
</table>
</form>
</body>
</html>
備註
IsInRole 會先檢查 IsRoleListCached 屬性,以判斷目前使用者的角色名稱快取清單是否可用。
IsRoleListCached如果 屬性為 true
,則會檢查所指定角色的快取清單。
IsInRole如果方法在快取清單中尋找指定的角色,則會傳true
回 。
如果 IsInRole 找不到指定的角色,它會呼叫 GetRolesForUser 預設 Provider 實例的 方法,以判斷用戶名稱是否與所設定 ApplicationName 值的數據源中的角色相關聯。