Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Laravel 5
Code

Gates dan Policies di Laravel

by
Difficulty:BeginnerLength:MediumLanguages:

Indonesian (Bahasa Indonesia) translation by Sap (you can also view the original English article)

Hari ini, kita akan membahas sistem authorization Laravel web framework. Laravel framework mengimplementasikan authorization dalam bentuk gates dan policies. Setelah pengenalan gates dan policies, saya akan menunjukkan konsep-konsep dengan menerapkan sebuah contoh custom.

Saya berasumsi bahwa Anda sudah menyadari built-in sistem authentication Laravel karena itu adalah sesuatu yang penting untuk memahami konsep authorization. Jelas, sistem authorization yang bekerja dalam hubungannya dengan sistem authentication untuk mengidentifikasi sesi pengguna yang sah.

Jika Anda tidak menyadari sistem Laravel authentication, saya akan sangat menyarankan pergi ke dokumentasi resmi, yang menyediakan Anda dengan wawasan hands-on terhadap subjek.

Laravel's pendekatan untuk Authorization

Sekarang, Anda harus tahu bahwa sistem Laravel authorization datang dalam dua rasa — gates dan policies. Walaupun mungkin terdengar seperti urusan yang rumit, saya akan mengatakan ini sangat mudah untuk mengimplementasikan hal ini sekali Anda dapat menguasainya!

Gates memungkinkan Anda untuk menentukan aturan authorization yang menggunakan pendekatan berbasis closure. Dengan kata lain, ketika Anda ingin memberikan authorize tindakan yang tidak berhubungan dengan model tertentu, gate adalah tempat yang sempurna untuk menerapkan logika.

Mari kita lihat sekilas authorization berbasis-gate yang tampak seperti:

Potongan di atas mendefinisikan aturan authorization update-post yang Anda bisa call dari manapun dalam aplikasi Anda.

Di sisi lain, Anda harus menggunakan policies bila Anda ingin group logika authorization setiap model. Sebagai contoh, katakanlah Anda memiliki model Post dalam aplikasi Anda, dan Anda ingin authorize model actions CRUD. Dalam hal ini, itu adalah policy yang Anda butuhkan untuk menerapkannya.

Seperti yang Anda lihat, itu adalah policy class sederhana yang mendefinisikan authorization untuk tindakan CRUD model Post.

Jadi itu sebuah pengenalan gates dan policies di Laravel. Dari bagian berikutnya dan seterusnya, kita akan mulai melalui demonstrasi praktek dari setiap elemen.

Gates

Dalam bagian ini, kita akan melihat sebuah contoh nyata untuk memahami konsep gates.

Lebih sering daripada tidak, Anda akan melihat Laravel service provider ketika Anda harus mendaftar component atau service. Mengikuti konvensi itu, mari kita lanjutkan ke depan dan menentukan kustom gate dalam app/Providers/AuthServiceProvider.php seperti yang ditunjukkan dalam potongan berikut.

Dalam method boot, kita sudah didefinisikan custom gate:

Sementara mendefinisikan gate, dibutuhkan closure yang mengembalikan TRUE atau FALSE berdasarkan logika authorization yang didefinisikan dalam definisi gate. Selain function closure, ada cara lain Anda dapat menetapkan gates.

Sebagai contoh, definisi gate berikut memanggil action controller bukan function closure.

Sekarang, mari kita lanjutkan dan menambahkan kostum route sehingga kita bisa melanjutkan melalui demonstrasi bagaimana gate-based authorization bekerja. Dalam route file routes/web.php, mari kita menambahkan route berikut.

Mari kita membuat controller terkait file app/Http/Controllers/PostController.php juga.

Dalam kebanyakan kasus, Anda akan berakhir menggunakan baik allows atau denies method Gate facade untuk authorize tindakan tertentu. Dalam contoh kita di atas, kami telah menggunakan method allows untuk memeriksa apakah pengguna saat ini dapat melakukan tindakan update-post.

Pengguna dengan mata tajam akan menyadari bahwa kami hanya melewati argumen kedua $post untuk closure. Argumen pertama, pengguna saat ini masuk, secara otomatis injected oleh Gate facade.

Jadi itulah bagaimana Anda seharusnya menggunakan gates untuk authorize tindakan dalam aplikasi Laravel. Bagian berikutnya semua tentang bagaimana menggunakan policies, jika Anda ingin menerapkan authorization untuk model Anda.

Policies

Seperti yang kita bahas sebelumnya, bila Anda ingin logika tindakan group authorization Anda untuk model tertentu atau resource, itu adalah policy yang Anda cari.

Dalam bagian ini, kita akan membuat kebijakan untuk model Post yang akan digunakan untuk authorize semua tindakan CRUD. Saya berasumsi bahwa Anda sudah siap menerapkan model Post dalam aplikasi Anda; Jika tidak, sesuatu yang serupa akan dilakukan.

Perintah artisan Laravel adalah teman terbaik Anda ketika datang untuk menciptakan kode mematikan. Anda dapat menggunakan perintah artisan berikut untuk membuat policy untuk Post model.

Seperti yang Anda lihat, kami telah disediakan argumen --model =Post sehingga menciptakan semua method-method CRUD. Dalam ketiadaan itu, itu akan membuat class Policy yang kosong. Anda dapat menemukan Policy class baru dibuat di app/Policies/PostPolicy.php.

Mari kita ganti dengan kode berikut.

Untuk dapat menggunakan Policy class, kita perlu mendaftar menggunakan Laravel service provider seperti yang ditunjukkan dalam potongan berikut.

Kami telah menambahkan pemetaan Policy kami di properti $policies. Ia memberitahu Laravel untuk memanggil method policy tersebut untuk authorize tindakan CRUD.

Anda juga perlu mendaftarkan policies menggunakan method registerPolicies, seperti yang kami lakukan dalam method boot.

Bergerak lebih lanjut, mari kita membuat beberapa kustom route dalam file routes/web.php sehingga kita dapat menguji method Policy kami di sana.

Akhirnya, mari kita membuat controller terkait di app/Http/Controllers/PostController.php.

Ada berbagai cara Anda dapat tindakan authorize Anda menggunakan Policies. Dalam contoh kita di atas, kami telah menggunakan model User untuk authorize tindakan model Post.

Model User menyediakan dua method yang berguna untuk tujuan authorization — can dan cant. Method can digunakan untuk memeriksa apakah user saat ini mampu melaksanakan tindakan tertentu. Dan pasangan dari method can, method cant, digunakan untuk menentukan ketidakmampuan pelaksanaan action.

Mari kita ambil code method view dari controller untuk melihat memang demikian

Pertama, kita memuat pengguna yang saat ini masuk, yang memberikan kita objek model User. Selanjutnya, kami memuat contoh post yang menggunakan model Post.

Bergerak maju, kami telah menggunakan method can dari model User untuk authorize tindakan view model Post. Argumen pertama method can adalah nama tindakan yang ingin Anda authorize, dan argumen kedua adalah objek model yang Anda ingin mendapatkan authorized.

Itu adalah sebuah demonstrasi tentang bagaimana menggunakan model User untuk authorize tindakan menggunakan policies. Atau, Anda bisa menggunakan Controller Helper juga, jika Anda berada dalam controller action authorizing tertentu.

Seperti yang Anda lihat, Anda tidak perlu untuk memuat model User jika Anda menggunakan Controller Helper.

Jadi itu adalah konsep policies yang Anda inginkan, dan itu benar-benar berguna sementara authorizing model atau resource karena memungkinkan Anda untuk mengelompokkan logika authorization di satu tempat.

Hanya pastikan bahwa Anda tidak menggunakan gates dan policies seluruhnya untuk actions yang sama dari Model, sebaliknya hal itu akan membuat masalah. Itu dia dari saya untuk hari ini, dan saya sudahi hari ini!

Kesimpulan

Hari ini, Laravel authorization yang mengambil panggung di artikel saya. Di awal artikel, saya memperkenalkan unsur utama dari Laravel authorization, gates dan policies.

Setelah itu, kami melewati penciptaan kustom gate dan policy untuk melihat cara kerjanya di dunia nyata. Saya harap Anda telah menikmati artikel dan belajar sesuatu yang berguna dalam konteks Laravel.

Bagi Anda yang hanya akan mulai dengan Laravel atau mencari untuk memperluas pengetahuan Anda, situs, atau aplikasi dengan ekstensi, kami memiliki berbagai hal yang Anda dapat belajar di Envato Market.

Seperti biasa, saya akan senang mendengar dari Anda dalam bentuk komentar menggunakan feed di bawah ini!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.