Filter Tindakan di MVC [Jenis Filter dengan Contoh]
Diterbitkan: 2021-03-04Daftar isi
ASP.NET MVC – Filter Tindakan
Dalam filter MVC (Model-View-Controller), kami menggunakan logika tambahan sesuai dengan fungsi atau logika yang berbeda dari pemrosesan permintaan Kerangka MVC.
Filter MVC menerapkan proses untuk tingkat yang berbeda: misalnya, otorisasi, logging, dan caching.
Kami dapat mempertimbangkan filter Tindakan sebagai atribut yang dapat kami terapkan ke metode tindakan pengontrol untuk melakukan modifikasi sesuai logika bisnis.
Kami dapat mempertimbangkan filter MVC dari sistem. Atribut didefinisikan sebagai kelas, metode, properti, dan bidang.
Baca Juga: Proyek MVC
Kerangka ASP.NET MVC Menggabungkan Berbagai Filter Tindakan
Otorisasi : Filter tindakan ini memiliki kemampuan membatasi akses ke peran pengguna tertentu.
OutputCache : Ini adalah filter tindakan, dan menyimpan hasil dari metode tindakan pengontrol dalam waktu yang ditentukan.
HandleError : Ketika tindakan pengontrol ini dijalankan, ia menangani kesalahan dalam skenario tertentu jika kode gagal. Ini memungkinkan Anda untuk membuat filter tindakan kustom Anda.
Misalnya, kita dapat membuat filter tindakan khusus untuk menjalankan sistem otentikasi khusus.
Sumber
Filter pipeline dalam aliran siklus hidup permintaan dan respons:
Sumber
Filter menyediakan dua kategori penerapan logika dalam kode, ia melakukan definisi antarmuka yang berbeda-
- Sinkronis
- Tidak sinkron
Filter Sinkron
Dalam filter Sinkronisasi, kita dapat menjalankan kode sebelum dan sesudah pipa saat proses; kita dapat menganggapnya sebagai metode tindakan OnStageExecuting dan OnStageExecuted .
Filter Asinkron
Filter asinkron dijelaskan dengan metode tunggal, yang memiliki metode:
- OnActionExecuting
- AktifAksiDieksekusi
- OnActionExecutionAsync
Cuplikan kode di bawah ini adalah jenis deklarasi
TimestampFilter kelas publik : IActionFilter, IAsyncActionFilter
{
public void OnActionExecuting (konteks ActionExecutingContext)
{
context.ActionDescriptor.RouteValues[“timestamp”] = DateTime.Now.ToString();
}
public void OnActionExecuted (konteks ActionExecutedContext)
{
var ts = DateTime.Parse(context.ActionDescriptor. RouteValues[“timestamp”]).AddHours(1).ToString();
context.HttpContext.Response.Headers[“X-EXPIRY-TIMESTAMP”] = ts;
}
Tugas asinkron publik OnActionExecutionAsync (konteks ActionExecutingContext, ActionExecutionDelegate selanjutnya)
{
this.OnActionExecuting(konteks);
var resultContext = menunggu berikutnya();
this.OnActionExecuted(resultContext);
}
}
Jenis Filter Tindakan di MVC
Kerangka kerja ASP.NET MVC memelihara berbagai filter:
Filter otorisasi: Menjalankan atribut IAuthorisationFilter.
Filter tindakan: Melakukan atribut IActionFilter.
Filter hasil : Jalankan atribut IResultFilter.
Filter pengecualian: Mengeksekusi atribut IExceptionFilter.
Filter Otorisasi
Kita bisa menggunakannya untuk aksesibilitas pengguna, dan kita bisa mendeklarasikannya sebelum implementasi metode aksi di controller.
Filter Otorisasi mengaktifkan dua atribut bawaan, misalnya: Otorisasi dan AllowAnonymous
Kami dapat menggunakan ini dalam logika khusus dalam kode sesuai kebutuhan bisnis kami.
Cuplikan kode di bawah ini adalah contoh filter Otorisasi
[Mengizinkan]
ActionResult SecureMethod() publik
{
kembali Lihat();
}
[IzinkanAnonim]
ActionResult NonSecureMethod() publik
{
kembali Lihat();
}
ActionResult SecureMethod() publik
{
kembali Lihat();
}
Filter Tindakan
Kita dapat menjelaskan filter Tindakan sebelum melakukan Metode Tindakan dan setelah metode tindakan.
Ini memegang dua jenis metode.
- AktifAksiDieksekusi
- OnActionExecuting
Cuplikan kode di bawah ini adalah contoh Filter Tindakan
menggunakan Sistem;
menggunakan System.Collections.Generic;
menggunakan System.Linq;
menggunakan System.Web;
menggunakan System.Web.Mvc;
namespace TutorialActionFilter.Filter
{
Myactionfilter kelas publik : FilterAttribute,IActionFilter
{
public void OnActionExecuted (ActionExecutedContext filterContext)
{
if (filterContext.HttpContext.Session[“UserID”] != null)
{
filterContext.Result = newRedirectResult(“/Beranda/Indeks”);
}
lain
{
filterContext.Result = newRedirectResult(“/Login /Login”);
}
}
public void OnActionExecuting (ActionExecutingContext filterContext)
{
if (filterContext.HttpContext.Session[“UserID”] != null)
{
filterContext.Result = newRedirectResult(“/Beranda/Indeks”);
}
lain
{
filterContext.Result = newRedirectResult(“/Login /Login”);
}
}
}
}
[Filter TindakanTutorial]
[TerimaVerb(HttpVerbs.Get)]
ActionResult GetPerson () publik
{
Orang p = Orang baru();
return View(“Orang”,p);
}
Filter Hasil
Kita dapat menjelaskan filter Tindakan sebelum melakukan Metode Tindakan dan setelah Metode Tindakan dilakukan.
Ini memegang dua jenis metode.
- OnResultDieksekusi
- OnResultExecuting
Cuplikan kode di bawah ini adalah contoh Filter Hasil
menggunakan Sistem;
menggunakan System.Collections.Generic;
menggunakan System.Linq;
menggunakan System.Web;
menggunakan System.Web.Mvc;
namespace ResultFilter.Filter
{
MyResultfilter kelas publik : FilterAttribute,IResultFilter
{
public void OnResultExecuted(ResultExecutedContext filterContext)
{
if (filterContext.HttpContext.Session[“UserID”] != null)
{
filterContext.Result = newRedirectResult(“/Beranda/Kontak”);
}
lain
{
filterContext.Result = newRedirectResult(“/Login/Login”);
}
}
public void OnResultExecuting (ResultExecutingContext filterContext)
{
if (filterContext.HttpContext.Session[“UserID”] != null)
{
filterContext.Result = newRedirectResult(“/Beranda/Kontak”);
}
lain
{
filterContext.Result = newRedirectResult(“/Login/Login”);
}
}
}
}
[Filter HasilSaya]
[TerimaVerb(HttpVerbs.Get)]
ActionResult GetPerson () publik
{
Orang p = Orang baru();
return View(“Orang”,p);
}
Filter Pengecualian
Kita dapat menggunakan ini ketika pengontrol atau metode tindakan melempar pengecualian.
Filter pengecualian ini penting untuk menangkap pengecualian.
Di bawah ini adalah cuplikan kode untuk menggunakan filter pengecualian
menggunakan Sistem;
menggunakan System.Collections.Generic;
menggunakan System.Linq;
menggunakan System.Web;
menggunakan System.Web.Mvc;
namespace ExceptionFilter.Filter
{
kelas publik MyExceptionFilter : FilterAttribute, IExceptionFilter
{
public void OnException (ExceptionContext filterContext)
{
filterContext.Controller.ViewBag.onExceptionError = “Filter ExceptionFilter dipanggil”;
filterContext.HttpContext.Response.Write(“Filter ExceptionFilter dipanggil”);
}
}
}
[Filter Pengecualian Saya]
HomeController kelas publik : Pengontrol
{
[TerimaVerb(HttpVerbs.Get)]
ActionResult GetPerson () publik
{
Orang p = Orang baru();
return View(“Orang”,p);
}
}
Baca Juga: Proyek Java MVC
Pelajari Kursus Perangkat Lunak online dari Universitas top dunia. Dapatkan Program PG Eksekutif, Program Sertifikat Tingkat Lanjut, atau Program Magister untuk mempercepat karier Anda.
Kesimpulan
Kami harap artikel ini membantu Anda memahami filter Tindakan di MVC.
Jika Anda tertarik untuk mempelajari lebih lanjut tentang pengembangan tumpukan penuh, lihat Program PG Eksekutif upGrad & IIIT-B dalam Pengembangan Perangkat Lunak Tumpukan Penuh yang dirancang untuk para profesional yang bekerja dan menawarkan 500+ jam pelatihan ketat, 9+ proyek, dan tugas, status Alumni IIIT-B, proyek batu penjuru praktis & bantuan pekerjaan dengan perusahaan-perusahaan top.
Apa itu struktur data dalam pemrograman?
Struktur data adalah cara kita mengatur data dalam sebuah program. Dua struktur data yang paling penting adalah array dan linked list. Array adalah struktur data yang paling familiar, dan paling mudah untuk dipahami. Array pada dasarnya adalah daftar bernomor dari item terkait. Mereka mudah dipahami dan digunakan, tetapi tidak terlalu efisien saat bekerja dengan data dalam jumlah besar. Daftar tertaut lebih kompleks, tetapi bisa sangat efisien jika digunakan dengan benar. Mereka adalah pilihan yang baik ketika Anda harus menambahkan atau menghapus item di tengah daftar besar, atau ketika Anda perlu mencari item dalam daftar besar.
Apa perbedaan antara daftar tertaut dan array?
Dalam array, indeks digunakan untuk mengakses elemen. Elemen dalam array diatur dalam urutan berurutan, yang memudahkan untuk mengakses dan memodifikasi elemen jika indeks digunakan. Array juga memiliki ukuran tetap. Elemen dialokasikan pada saat pembuatannya. Dalam linked list, pointer digunakan untuk mengakses sebuah elemen. Elemen daftar tertaut tidak harus disimpan secara berurutan. Daftar tertaut memiliki ukuran yang tidak diketahui karena dapat berisi node pada saat pembuatannya. Pointer digunakan untuk mengakses suatu elemen, sehingga alokasi memori lebih mudah.
Apa itu pointer di C?
Pointer adalah tipe data dalam C yang menyimpan alamat variabel atau fungsi apa pun. Biasanya digunakan sebagai referensi ke lokasi memori lain. Pointer dapat menyimpan alamat memori array, struktur, fungsi, atau tipe lainnya. C menggunakan pointer untuk meneruskan nilai ke dan menerima nilai dari fungsi. Pointer digunakan untuk mengalokasikan ruang memori secara dinamis.