Bagikan melalui


WebPartManager.OnAuthorizeWebPart(WebPartAuthorizationEventArgs) Metode

Definisi

AuthorizeWebPart Menaikkan acara dan memanggil handler untuk peristiwa tersebut, jika ada.

protected:
 virtual void OnAuthorizeWebPart(System::Web::UI::WebControls::WebParts::WebPartAuthorizationEventArgs ^ e);
protected virtual void OnAuthorizeWebPart (System.Web.UI.WebControls.WebParts.WebPartAuthorizationEventArgs e);
abstract member OnAuthorizeWebPart : System.Web.UI.WebControls.WebParts.WebPartAuthorizationEventArgs -> unit
override this.OnAuthorizeWebPart : System.Web.UI.WebControls.WebParts.WebPartAuthorizationEventArgs -> unit
Protected Overridable Sub OnAuthorizeWebPart (e As WebPartAuthorizationEventArgs)

Parameter

Contoh

Contoh kode berikut menunjukkan cara mengatur penanganan aktivitas kustom untuk AuthorizeWebPart peristiwa tersebut, sehingga handler dapat menyediakan kode pemfilteran kustom untuk metode tersebut OnAuthorizeWebPart . Contoh ini akan menjadi cara umum bagi pengembang halaman untuk menyediakan skenario pemfilteran dan otorisasi WebPart kontrol yang akan ditambahkan ke halaman.

Di halaman Web, perhatikan bahwa <asp:webpartmanager> elemen memiliki OnAuthorizeWebPart atribut dengan nama penanganan aktivitas yang ditetapkan untuknya. Metode ini memeriksa apakah kontrol pada halaman memiliki nilai properti masing-masing AuthorizationFilter yang diatur ke admin dan, jika demikian, mengembalikan true, yang berarti bahwa mereka akan diotorisasi dan ditambahkan ke halaman.

Catatan

Perhatikan bahwa kontrol yang tidak memiliki nilai apa pun yang ditetapkan ke AuthorizationFilter properti juga ditambahkan, karena diasumsikan tidak menjadi bagian dari skenario pemfilteran. Ini akan menjadi pendekatan umum dalam skenario pemfilteran: beberapa kontrol akan difilter, dan yang lain tidak akan, karena mereka dianggap tersedia untuk semua pengguna.

<%@ 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>

Karena menyiapkan pengguna dalam peran berada di luar cakupan topik ini, contoh kode ini tidak memeriksa peran pengguna dalam pemfilteran. Namun, skenario kontrol pemfilteran menurut peran pengguna kemungkinan akan menjadi salah satu penggunaan paling umum dari fitur pemfilteran ini. Jika Anda memiliki peran di situs Anda, dan Anda ingin memeriksa peran pengguna dalam metode ini untuk memfilter kontrol, metode akan menyerupai blok kode berikut (versus pendekatan yang lebih sederhana dalam contoh kode sebelumnya, yang tidak menggunakan peran).

Protected Sub WebPartManager1_AuthorizeWebPart(ByVal sender _  
  As Object, ByVal e As WebPartAuthorizationEventArgs)  

  If String.IsNullOrEmpty(e.AuthorizationFilter) Then  
    If Roles.IsUserInRole(Page.User.Identity.Name, _  
      e.AuthorizationFilter) Then  

      e.IsAuthorized = True  
    Else  
      e.IsAuthorized = False  
    End If  
  End If  

End Sub  
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;  
  }  
}  

Keterangan

Metode OnAuthorizeWebPart ini dipanggil oleh IsAuthorized metode , ketika WebPart kontrol sedang diperiksa agar otorisasi ditambahkan ke halaman. Ketika metode dipanggil OnAuthorizeWebPart , metode akan menaikkan AuthorizeWebPart peristiwa, dan jika ada metode handler untuk peristiwa tersebut, metode akan memanggil handler.

Proses otorisasi WebPart kontrol adalah fitur Komponen Web penting. Setiap WebPart kontrol server atau yang ditambahkan ke zona oleh WebPartManager kontrol melewati proses otorisasi untuk menentukan apakah kontrol dapat ditambahkan. Secara default, kumpulan kontrol Bagian Web tidak menyediakan kriteria pemfilteran apa pun untuk mencegah kontrol ditambahkan ke zona. Tetapi set kontrol memang menyediakan mekanisme yang diperlukan bagi pengembang untuk membuat kriteria pemfilteran mereka sendiri. Dengan menggunakan mekanisme ini, Anda dapat membuat skenario pemfilteran kustom. Misalnya, Anda dapat membuat filter sehingga, jika pengguna berada dalam peran administrator, kontrol tertentu akan ditambahkan ke zona saat halaman dirender, dan jika pengguna berada dalam peran pengguna, kontrol tersebut tidak akan ditambahkan.

Mekanisme untuk memfilter kontrol selama proses otorisasi adalah AuthorizationFilter properti pada WebPart kontrol, IsAuthorized metode dan OnAuthorizeWebPart , dan AuthorizeWebPart peristiwa pada WebPartManager kontrol.

Untuk membuat skenario pemfilteran, pada dasarnya ada dua tugas. Pertama, Anda menetapkan string ke AuthorizationFilter properti dari setiap kontrol yang WebPart ingin Anda filter. Nilai string ini bisa berubah-acak, tetapi harus berisi kriteria yang ingin Anda filter. Misalnya, jika Anda ingin kontrol tertentu ditambahkan ke zona hanya jika pengguna administrator melihat halaman, maka Anda mungkin menetapkan nilai admin string ke properti . Kemudian Anda dapat menggunakan fitur peran ASP.NET, dan menambahkan semua pengguna situs Anda ke berbagai peran seperti administrator, manajer, dan pengguna. Saat halaman dimuat, kode pemfilteran Anda akan memeriksa peran pengguna, membandingkannya dengan nilai filter otorisasi pada kontrol yang sedang diperiksa, dan jika (misalnya) pengguna berada dalam peran administrator dan Anda telah mengatur nilai kontrol AuthorizationFilter ke admin, kontrol dapat ditambahkan.

Langkah kedua dalam membuat skenario pemfilteran adalah menulis kode untuk memeriksa AuthorizationFilter nilai properti pada WebPart kontrol, dan menentukan apakah setiap kontrol diotorisasi sebelum ditambahkan ke zonanya. Ada dua opsi tempat menempatkan kode pemfilteran ini. Opsi pertama adalah opsi yang disukai untuk pengembang halaman. Anda dapat membuat metode untuk menangani AuthorizeWebPart peristiwa secara langsung di kode skrip server halaman Web, atau dalam file pemisahan kode. Kaitkan metode Anda dengan peristiwa dengan menambahkan OnAuthorizeWebPart atribut ke tag untuk WebPartManager kontrol di halaman, seperti yang ditunjukkan dalam kode markup sampel berikut.

<asp:webpartmanager id="manager1" runat="server"   
   OnAuthorizeWebPart="manager1_AuthorizeWebPart" />  

Semua metode kustom Anda harus dilakukan adalah memeriksa setiap WebPart kontrol untuk kriteria pemfilteran dan kemudian, berdasarkan hasilnya, menetapkan nilai Boolean ke IsAuthorized properti WebPartAuthorizationEventArgs objek untuk menunjukkan apakah WebPart kontrol dapat ditambahkan. Kode di bagian Contoh menunjukkan cara melakukan ini.

Opsi kedua untuk tempat menempatkan kode pemfilteran Anda adalah mewarisi dari WebPartManager kelas, dan mengambil alih metode untuk memeriksa kriteria filter. Dua metode yang dapat Anda ambil alih untuk melakukan ini adalah WebPartManager.IsAuthorized(Type, String, String, Boolean) metode atau OnAuthorizeWebPart metode . Meskipun salah satu metode akan berfungsi, dalam banyak kasus lebih baik untuk mengambil IsAuthorized alih metode, karena memberi Anda kontrol terprogram yang lebih besar atas seluruh proses otorisasi, sedangkan OnAuthorizeWebPart metode hanya melakukan satu tugas tertentu, yaitu menaikkan peristiwa dan memeriksa handler. Untuk contoh kode kelas kustom WebPartManager yang mengambil IsAuthorized alih metode , lihat WebPartManager.IsAuthorized(Type, String, String, Boolean) kelebihan beban metode.

Berlaku untuk

Lihat juga