Bagaimana saya menggunakan penapis dalam pengawal?
Apabila menggunakan penapis dalam pengawal, jika anda menghadapi logik yang dikongsi oleh pelbagai operasi (seperti pengesahan, pembalakan, dan lain -lain), penapis harus digunakan terlebih dahulu untuk memastikan kod itu kemas dan boleh diguna semula. 1. Penapis adalah blok logik yang dijalankan sebelum dan selepas tindakan dilaksanakan, digunakan untuk mengendalikan tugas -tugas di pelbagai operasi; 2. Penapis permohonan biasanya dilaksanakan dengan menambahkan atribut kepada kaedah pengawal atau tindakan, seperti [memberi kuasa]; 3. Mewujudkan penapis tersuai memerlukan antara muka tertentu, seperti IActionFilter, dan boleh diperiksa sebelum tindakan dilaksanakan; 4. Penapis global boleh digunakan untuk semua permintaan melalui pendaftaran, dan sesuai untuk perlindungan anti-pemalsuan, HTTPS di seluruh laman web dan senario lain. Dengan menggunakan penapis yang munasabah, ia dapat mengurangkan kod pendua secara berkesan dan meningkatkan pemeliharaan aplikasi.
Apabila anda bekerja dengan penapis dalam pengawal -terutamanya dalam rangka kerja seperti ASP.NET MVC atau yang serupa -anda pada dasarnya menggunakan logik sebelum atau selepas tindakan berjalan. Idea utama adalah untuk memastikan kod anda bersih dan boleh diguna semula dengan memisahkan kebimbangan seperti pengesahan, pembalakan, atau pengesahan dari kaedah tindakan sebenar.
Inilah cara untuk menggunakannya tanpa tersesat dalam abstraksi.
Apakah penapis dan mengapa menggunakannya?
Penapis adalah potongan logik yang dijalankan sebelum atau selepas tindakan pengawal. Mereka membantu anda mengendalikan tugas yang berlaku dalam pelbagai tindakan, seperti memeriksa kebenaran pengguna, permintaan pembalakan, atau pengendalian pengecualian.
Daripada mengulangi kod di dalam setiap kaedah tindakan, anda melampirkan penapis sekali dan ia berjalan secara automatik. Fikirkan ia seperti menubuhkan pusat pemeriksaan: Peraturan tertentu dapat dikuatkuasakan tidak kira tindakan mana yang dipanggil.
Kegunaan biasa:
- Pemeriksaan pengesahan dan kebenaran
- Permintaan pembalakan atau masa
- Mengendalikan kesilapan secara konsisten
- Respons Caching
Cara Memohon Penapis di Pengawal Anda
Memohon penapis biasanya hanya soal menambah atribut ke kelas pengawal anda atau kaedah tindakan tertentu.
Sebagai contoh, dalam ASP.NET MVC:
[Memberi kuasa] Kelas AccountController: Pengawal { Log Masuk IactionResult Public () { paparan kembali (); } }
Dalam kes ini, penapis [Authorize]
memastikan hanya pengguna yang disahkan boleh mengakses sebarang tindakan dalam pengawal ini.
Anda juga boleh memohon kepada satu kaedah:
BlogController Kelas Awam: Pengawal { [Memberi kuasa] Edit Public IactionResult (int ID) { paparan kembali (); } Indeks IactionResult Awam () { paparan kembali (); } }
Sekarang hanya tindakan Edit
memerlukan kebenaran, sementara Index
tetap terbuka.
Membuat penapis tersuai (ketika terbina dalam tidak mencukupi)
Kadang-kadang penapis terbina dalam tidak memotongnya. Sebagai contoh, mungkin anda ingin menyemak sama ada pengguna telah menyelesaikan profil mereka sebelum membenarkan mereka menyiarkan kandungan.
Untuk membuat penapis tersuai, anda biasanya melaksanakan salah satu antara muka asas seperti IActionFilter
, IAuthorizationFilter
, atau IResultFilter
.
Berikut adalah contoh asas penapis tindakan tersuai:
Kelas Awam memerlukanProfileCompleteAttribute: ActionFilterAttribute { override public onActionExecuting (ActionExecutingContext Context) { var httpcontext = context.httpcontext; var user = httpcontext.user; // periksa sama ada profil pengguna selesai jika (! isprofileComplete (pengguna)) { context.result = redirectResult baru ("/profil/lengkap"); } base.onActionExecuting (konteks); } bool peribadi isprofileComplete (pengguna tuntutanprincipal) { // logik untuk memeriksa status profil kembali palsu; // sebagai contoh } }
Kemudian gunakannya seperti penapis lain:
[MemerlukanProfileComplete] postarticle iactionResult awam () { paparan kembali (); }
Ini menjadikan pengawal anda bersandar dan membuat tingkah laku boleh diguna semula dalam pelbagai tindakan atau pengawal yang berbeza.
Mendaftarkan penapis global (memohon kepada semua tindakan)
Jika anda mahu penapis dijalankan pada setiap permintaan, anda boleh mendaftarkannya secara global dan bukannya melampirkannya secara manual kepada setiap pengawal atau tindakan.
Dalam teras ASP.NET, anda melakukan ini dalam Startup.cs
atau Program.cs
bergantung pada versi:
Service.AddControllersWithViews (Options => { options.filters.add (baru autovalidateAntiForGeryTokenAttribute ()); });
Atau untuk penapis global tersuai:
Service.AddControllersWithViews (Options => { options.filters.add (typeof (myGlobalFilterAttribute)); });
Ini berguna untuk perkara-perkara seperti perlindungan anti-pengarang, pembalakan semua permintaan, atau menguatkuasakan laman web HTTPS di seluruh dunia.
Menggunakan penapis dengan berkesan membantu anda menulis lebih bersih, lebih banyak kod yang dikekalkan. Anda tidak perlu taburkan pemeriksaan yang sama dalam setiap tindakan -hanya menentukan peraturan sekali dan biarkan rangka kerja menguatkuasakannya.
Dan dengan jujur, apabila anda mula menggunakannya secara teratur, anda akan tertanya -tanya bagaimana anda pernah berjaya tanpa mereka.
Pada dasarnya itu sahaja.
Atas ialah kandungan terperinci Bagaimana saya menggunakan penapis dalam pengawal?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Untuk menjadi tuan YII, anda perlu menguasai kemahiran berikut: 1) Memahami seni bina MVC YII, 2) mahir dalam menggunakan ActiveReCordorm, 3) dengan berkesan menggunakan alat penjanaan kod GII, 4) menguasai peraturan pengesahan YII, 5) mengoptimumkan prestasi pertanyaan pangkalan data, 6) secara berterusan memberi perhatian kepada sumber -sumber YII. Melalui pembelajaran dan amalan kemahiran ini, keupayaan pembangunan di bawah kerangka YII dapat diperbaiki secara komprehensif.

Dalam YII, widget digunakan untuk melaksanakan multiplexing komponen dengan merangkumi logik paparan kompleks. 1. Gunakan kaedah widget () untuk memanggil widget terbina dalam, seperti LinkPager untuk penomboran, dan ActiveForm untuk mencipta bentuk mengikat model; 2. Widget biasa termasuk GridView untuk memaparkan data jadual, terperinci untuk memaparkan butiran model, dan menu menu menu navigasi; 3. Widget tersuai boleh dibuat dengan mewarisi yii \ base \ widget, melaksanakan kaedah larian () dan menentukan atribut untuk meningkatkan kebolehgunaan semula, seperti yang ditunjukkan dalam contoh Hellowidget. Menguasai kaedah teras ini dapat meningkatkan kecekapan pembangunan.

Dalam Yii, widget adalah komponen yang boleh digunakan semula yang digunakan untuk merangkum unsur -unsur UI atau logik biasa. Peranan terasnya adalah untuk meningkatkan kecekapan pembangunan dan mengekalkan konsistensi antara muka. Menggunakan widget Yii boleh mengelakkan penulisan kod berulang, merealisasikan penggunaan semula kod, mengekalkan antara muka bersatu, titik fokus berasingan, dan memudahkan pengembangan. YII menyediakan pelbagai widget terbina dalam, seperti ActiveForm untuk Borang Model, Senarai Paparan ListView/GridView dan data jadual, pelaksanaan penomboran kawalan penomboran, dan menu secara dinamik menjana menu navigasi. Apabila kod Lihat didapati ditiru, logik dan persembahan yang diperlukan, atau tingkah laku dinamik abstrak, widget tersuai harus dibuat. Kaedah penciptaan diwarisi oleh yii \ base.wid

Inyii, viewsseparatedisplaylogicFromApplicationCodeToimproveManAgeAbility.1.ViewsarephpfilestHatoutPuthtmlusingDataPassedFromControllersViamethodsLike $ this-> render ()

Tulis pertanyaan SQL tersuai di YII dan boleh dilaksanakan melalui Yii :: $ App-> db. Langkah -langkah adalah seperti berikut: 1. Buat arahan pertanyaan menggunakan createCommand (); 2. Parameter mengikat melalui bindValue () atau bindParam () untuk mencegah suntikan SQL; 3. Call QueryAll (), queryOne () dan kaedah lain untuk melaksanakan pertanyaan; 4. Untuk memasukkan dan mengemaskini operasi, anda boleh mengikat Call Insert () dan mengemas kini () kaedah; 5. Adalah disyorkan untuk menulis SQL secara langsung dan mengikat parameter; 6. Jika hasilnya perlu ditukar menjadi model, anda boleh memberi instantiate dan menetapkan sifat; 7. Gunakan QueryBuilder untuk membina pertanyaan selamat terlebih dahulu, dan balasan, dan balasan.

Perlawanan adalah mekanisme yang digunakan untuk pramuat data dalam ujian YII. 1. Buat kelas perlawanan untuk mewarisi aktif dan tentukan model; 2. Tetapkan perintah ketergantungan melalui $ bergantung; 3. Tentukan fail data dalam data/direktori; 4. Mengisytiharkan penggunaan dalam kelas ujian melalui kaedah lekapan (); 5. Yii secara automatik memuat dan membersihkan data selepas ujian. Sebagai contoh, UserFixture akan memuatkan data pengguna dalam fail ujian/lekapan/data/user.php. Semasa ujian, anda boleh mendapatkan data ALICE melalui $ this-> pengguna ['user1'] untuk pengesahan pernyataan. Yii menawarkan pelbagai fi

YII menyediakan dua templat aplikasi utama: Asas dan Lanjutan. Templat asas sesuai untuk projek kecil dan sederhana, dengan struktur direktori mudah dan fungsi asas, seperti log masuk pengguna, borang hubungan dan halaman ralat, sesuai untuk pemula atau untuk membangunkan aplikasi mudah; Templat lanjutan sesuai untuk aplikasi besar, menyokong seni bina pelbagai persekitaran, pengurusan kebenaran peranan terbina dalam, dan mempunyai struktur fail yang lebih kompleks, sesuai untuk kerjasama pasukan dan pembangunan peringkat perusahaan. Apabila memilih templat, anda harus membuat keputusan berdasarkan saiz projek, struktur pasukan dan matlamat jangka panjang: Pilih Asas untuk blog peribadi atau pembelajaran untuk digunakan, dan pilih Advanced untuk platform e-dagang atau sistem multi-modul.

Laravelimplementsthemvcpatternbyingingmodelsfordatamanagement, controllersforbusinesslogic, andviewsforpresentation.1) ModelsinlaravelarePowerfulfandlingdataandrelationships.2)
