WebPart.AuthorizationFilter Свойство
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Получает или задает произвольную строку для определения, является ли элемент управления WebPart авторизованным для добавления на страницу.
public:
virtual property System::String ^ AuthorizationFilter { System::String ^ get(); void set(System::String ^ value); };
[System.Web.UI.Themeable(false)]
[System.Web.UI.WebControls.WebParts.Personalizable(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)]
public virtual string AuthorizationFilter { get; set; }
[<System.Web.UI.Themeable(false)>]
[<System.Web.UI.WebControls.WebParts.Personalizable(System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared)>]
member this.AuthorizationFilter : string with get, set
Public Overridable Property AuthorizationFilter As String
Значение свойства
Строка, которая авторизует элемент управления для добавления на веб-страницу. Значение по умолчанию — пустая строка.
- Атрибуты
Примеры
В следующем примере кода демонстрируется использование AuthorizationFilter свойство. В нем показано, как задать обработчик пользовательского AuthorizeWebPart метода для события, чтобы обработчик смог предоставить пользовательский код фильтрации для OnAuthorizeWebPart метода. Этот пример является типичным для разработчика страниц способом предоставления сценария фильтрации и авторизации WebPart элементов управления для добавления на страницу.
Обратите внимание, что <asp:webpartmanager>
в коде веб-страницы элемент имеет OnAuthorizeWebPart
атрибут с именем назначенного ему обработчика событий. Этот метод проверяет, имеет AuthorizationFilter ли для элементов управления на странице значение admin
свойства , и если да, возвращает true
, то есть они будут авторизованы и добавлены на страницу.
Примечание
Обратите внимание, что элементы управления, которым не присвоено значение, присвоенное свойству AuthorizationFilter , также добавляются, так как предполагается, что они не являются частью сценария фильтрации. Это распространенный подход в сценарии фильтрации: некоторые элементы управления будут отфильтрованы, а другие — нет, так как предполагается, что они доступны для всех пользователей.
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
protected void mgr1_AuthorizeWebPart(object sender,
WebPartAuthorizationEventArgs e)
{
if (!String.IsNullOrEmpty(e.AuthorizationFilter))
{
if (e.AuthorizationFilter == "user")
e.IsAuthorized = true;
else
e.IsAuthorized = false;
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:WebPartManager ID="mgr1" runat="server"
OnAuthorizeWebPart="mgr1_AuthorizeWebPart" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<asp:BulletedList
ID="BulletedList1"
Runat="server"
DisplayMode="HyperLink"
Title="Favorite Links"
AuthorizationFilter="admin">
<asp:ListItem Value="http://msdn.microsoft.com">
MSDN
</asp:ListItem>
<asp:ListItem Value="http://www.asp.net">
ASP.NET
</asp:ListItem>
<asp:ListItem Value="http://www.msn.com">
MSN
</asp:ListItem>
</asp:BulletedList>
<asp:Label ID="Label1" runat="server"
Text="Hello World"
Title="Filter Test"
AuthorizationFilter="admin" />
<asp:Calendar ID="Calendar1" runat="server"
Title="My Calendar"/>
</ZoneTemplate>
</asp:WebPartZone>
</div>
</form>
</body>
</html>
<%@ Page Language="vb" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Protected Sub mgr1_AuthorizeWebPart(ByVal sender As Object, _
ByVal e As WebPartAuthorizationEventArgs)
If Not String.IsNullOrEmpty(e.AuthorizationFilter) Then
If e.AuthorizationFilter = "user" Then
e.IsAuthorized = True
Else
e.IsAuthorized = False
End If
End If
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:WebPartManager ID="mgr1" runat="server"
OnAuthorizeWebPart="mgr1_AuthorizeWebPart" />
<asp:WebPartZone ID="WebPartZone1" runat="server">
<ZoneTemplate>
<asp:BulletedList
ID="BulletedList1"
Runat="server"
DisplayMode="HyperLink"
Title="Favorite Links"
AuthorizationFilter="admin">
<asp:ListItem Value="http://msdn.microsoft.com">
MSDN
</asp:ListItem>
<asp:ListItem Value="http://www.asp.net">
ASP.NET
</asp:ListItem>
<asp:ListItem Value="http://www.msn.com">
MSN
</asp:ListItem>
</asp:BulletedList>
<asp:Label ID="Label1" runat="server"
Text="Hello World"
Title="Filter Test"
AuthorizationFilter="admin" />
<asp:Calendar ID="Calendar1" runat="server"
Title="My Calendar"/>
</ZoneTemplate>
</asp:WebPartZone>
</div>
</form>
</body>
</html>
Так как настройка пользователей в ролях выходит за рамки этого раздела, в этом примере кода роли пользователей не проверяются при фильтрации. Однако сценарий фильтрации элементов управления в соответствии с ролями пользователей, скорее всего, будет одним из наиболее распространенных вариантов использования этой функции фильтрации. Если у вас есть роли на сайте и вы хотите проверить роли пользователей в этом методе для фильтрации элементов управления, метод будет похож на следующий блок кода (по сравнению с более простым подходом в предыдущем примере кода, который не использует роли).
protected void mgr1_AuthorizeWebPart(object sender,
WebPartAuthorizationEventArgs e)
{
if (!String.IsNullOrEmpty(e.AuthorizationFilter))
{
if(Roles.IsUserInRole(Page.User.Identity.Name, e.authorizationFilter))
e.IsAuthorized = true;
else
e.IsAuthorized = false;
}
}
Комментарии
Набор элементов управления веб-частей не реализует поведение по умолчанию для AuthorizationFilter свойства . Однако свойство предоставляется для назначения произвольного строкового значения пользовательскому WebPart элементу управления. Это свойство может быть проверено элементом WebPartManager управления во время его AuthorizeWebPart события, чтобы определить, можно ли добавить элемент управления на страницу.
В некоторых случаях AuthorizationFilter свойство может использоваться с функцией диспетчера ролей ASP.NET, поэтому, если пользователь находится в определенной роли и если строковое значение AuthorizationFilter свойства соответствует определенным условиям, заданным разработчиком, элемент управления можно добавить. Такой подход позволяет разработчикам создавать пользовательские представления страницы на основе сочетания ролей и других заданных ими критериев авторизации.
Значение для данного свойства нельзя задать с помощью тем или тем таблиц стилей. Дополнительные сведения см. в разделах ThemeableAttribute и ASP.NET Темы и обложки.
Область персонализации этого свойства имеет значение Shared и может быть изменена только авторизованными пользователями. Дополнительные сведения см. в разделах и Общие сведения PersonalizableAttribute о персонализации веб-частей.
Примечания для тех, кто наследует этот метод
Чтобы использовать это свойство, необходимо создать пользовательский WebPartManager элемент управления и переопределить его OnAuthorizeWebPart(WebPartAuthorizationEventArgs) метод или IsAuthorized(WebPart) метод для обработки проверки AuthorizationFilter свойства.