WebPart.AuthorizationFilter 屬性
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
取得或設定自定字串,以判斷是否已獲授權將 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
屬性值
授權將控制項加入至 Web 網頁的字串。 預設值為空字串 ("")。
- 屬性
範例
下列程式代碼範例示範 如何使用 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;
}
}
備註
Web 元件控制件集不會實作 AuthorizationFilter 屬性的任何預設行為。 不過,會提供 屬性,讓您可以將任意字串值指派給自定義WebPart控件;控件可以在事件AuthorizeWebPart期間檢查WebPartManager此屬性,以判斷控件是否可以加入至頁面。
在某些情況下, AuthorizationFilter 屬性可能會與 ASP.NET 角色管理員功能搭配使用,因此,如果使用者處於特定角色,而且如果屬性的 AuthorizationFilter 字串值符合開發人員所設定的特定條件,則可以新增控件。 此方法可讓開發人員根據角色和他們指定的其他授權準則組合,建立頁面的自定義檢視。
這個屬性無法由佈景主題或樣式表主題設定。 如需詳細資訊,請參閱 ThemeableAttribute 和 ASP.NET 主題和外觀。
此屬性的個人化範圍設定為 Shared ,且只能由授權的使用者修改。 如需詳細資訊,請參閱 PersonalizableAttribute 和 Web 元件個人化概觀。
給繼承者的注意事項
若要使用這個屬性,您必須建立自定義 WebPartManager 控件,並覆寫其 OnAuthorizeWebPart(WebPartAuthorizationEventArgs) 方法或其 IsAuthorized(WebPart) 方法來處理屬性的 AuthorizationFilter 檢查。