AuthorizationStoreRoleProvider.RoleExists(String) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает значение, указывающее, имеется ли указанное имя роли в хранилище политик диспетчера авторизации.
public:
override bool RoleExists(System::String ^ roleName);
public override bool RoleExists (string roleName);
override this.RoleExists : string -> bool
Public Overrides Function RoleExists (roleName As String) As Boolean
Параметры
- roleName
- String
Имя роли, для которого будет проводиться поиск в хранилище политик диспетчера авторизации.
Возвращаемое значение
true
, если имя роли уже существует в хранилище политик диспетчера авторизации; в противном случае — false
.
Исключения
roleName
имеет значение null
.
Настроенное applicationName
не найдено.
-или-
Настроенное scopeName
не найдено.
-или-
Исполняющая среда диспетчера авторизации не установлена на сервере.
Атрибут connectionStringName
содержит ссылку на строку подключения к несуществующему файлу.
Экземпляр AuthorizationStoreRoleProvider настроен для использования файлового хранилища политик, и на текущем уровне доверия доступ для чтения к этому файлу запрещен.
Примеры
В следующем примере кода метод используется RoleExists для определения того, существует ли имя роли перед созданием роли. Пример файла Web.config, который обеспечивает управление ролями, см. в разделе AuthorizationStoreRoleProvider.
<%@ 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;
public void Page_Load(object sender, EventArgs args)
{
if (!IsPostBack)
{
// Bind roles to GridView.
rolesArray = Roles.GetAllRoles();
RolesGrid.DataSource = rolesArray;
RolesGrid.DataBind();
}
}
public void CreateRole_OnClick(object sender, EventArgs args)
{
string createRole = RoleTextBox.Text;
try
{
if (Roles.RoleExists(createRole))
{
Msg.Text = "Role '" + Server.HtmlEncode(createRole) + "' already exists. Please specify a different role name.";
return;
}
Roles.CreateRole(createRole);
Msg.Text = "Role '" + Server.HtmlEncode(createRole) + "' created.";
// Re-bind roles to GridView.
rolesArray = Roles.GetAllRoles();
RolesGrid.DataSource = rolesArray;
RolesGrid.DataBind();
}
catch (Exception e)
{
Msg.Text = "Role '" + Server.HtmlEncode(createRole) + "' <u>not</u> created.";
Response.Write(e.ToString());
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Create Role</title>
</head>
<body>
<form runat="server" id="PageForm">
<h3>Create a Role</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
Role name:
<asp:TextBox id="RoleTextBox" runat="server" />
<asp:Button Text="Create Role" id="CreateRoleButton"
runat="server" OnClick="CreateRole_OnClick" />
<br />
<asp:GridView runat="server" CellPadding="2" id="RolesGrid"
Gridlines="Both" CellSpacing="2" AutoGenerateColumns="false" >
<HeaderStyle BackColor="navy" ForeColor="white" />
<Columns>
<asp:TemplateField HeaderText="Roles" >
<ItemTemplate>
<%# Container.DataItem.ToString() %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</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
Public Sub Page_Load(sender As Object, args As EventArgs)
If Not IsPostBack Then
' Bind roles to GridView.
rolesArray = Roles.GetAllRoles()
RolesGrid.DataSource = rolesArray
RolesGrid.DataBind()
End If
End Sub
Public Sub CreateRole_OnClick(sender As Object, args As EventArgs)
Dim createRole As String = RoleTextBox.Text
Try
If Roles.RoleExists(createRole) Then
Msg.Text = "Role '" & Server.HtmlEncode(createRole) & "' already exists. Please specify a different role name."
Return
End If
Roles.CreateRole(createRole)
Msg.Text = "Role '" & Server.HtmlEncode(createRole) & "' created."
' Re-bind roles to GridView.
rolesArray = Roles.GetAllRoles()
RolesGrid.DataSource = rolesArray
RolesGrid.DataBind()
Catch
Msg.Text = "Role '" & Server.HtmlEncode(createRole) & "' <u>not</u> created."
End Try
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Sample: Create Role</title>
</head>
<body>
<form runat="server" id="PageForm">
<h3>Create a Role</h3>
<asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />
Role name:
<asp:TextBox id="RoleTextBox" runat="server" />
<asp:Button Text="Create Role" id="CreateRoleButton"
runat="server" OnClick="CreateRole_OnClick" />
<br />
<asp:GridView runat="server" CellPadding="2" id="RolesGrid"
Gridlines="Both" CellSpacing="2" AutoGenerateColumns="false" >
<HeaderStyle BackColor="navy" ForeColor="white" />
<Columns>
<asp:TemplateField HeaderText="Roles" >
<ItemTemplate>
<%# Container.DataItem.ToString() %>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</form>
</body>
</html>
Комментарии
Метод RoleExists вызывается классом Roles , чтобы определить, существует ли имя роли в хранилище данных диспетчера авторизации, указанном в файле конфигурации приложения ASP.NET (Web.config).