Gate: Pemeriksaan Otorisasi Sederhana
Definisikan dan evaluasi gate untuk logika izin tindakan pengguna.
Gate: Pemeriksaan Otorisasi Sederhana adalah pelajaran PHP Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar PHP Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus PHP Academy mencakup 4 pelajaran total.
Apa Itu Gerbang
Gerbang Laravel adalah fungsi anonim yang menentukan apakah pengguna berwenang melakukan tindakan tertentu. Gerbang merupakan pemeriksaan otorisasi global sederhana yang tidak terikat pada model tertentu.
Mendefinisikan Gerbang
Definisikan gerbang di App\Providers\AppServiceProvider atau AuthServiceProvider khusus menggunakan fasad Gate.
<?php
use Illuminate\Support\Facades\Gate;
// In a service provider's boot() method:
Gate::define("delete-post", function (User $user, Post $post) {
return $user->id === $post->user_id;
});Memeriksa Gerbang (mengizinkan/menolak)
Periksa hasil gerbang dengan Gate::allows() atau Gate::denies().
<?php
if (Gate::allows("delete-post", $post)) {
$post->delete();
}
if (Gate::denies("delete-post", $post)) {
abort(403);
}authorize() pada Pengontrol
Panggil $this->authorize() di dalam pengontrol — fungsi ini secara otomatis melempar AuthorizationException (403) saat gagal.
<?php
public function destroy(Post $post): RedirectResponse
{
$this->authorize("delete-post", $post);
$post->delete();
return redirect()->route("posts.index");
}@can pada Blade
Gunakan direktif @can untuk menampilkan antarmuka secara kondisional berdasarkan pemeriksaan gerbang.
@can('delete-post', $post)
<form method="POST" action="/posts/{{ $post->id }}">
@csrf @method('DELETE')
<button>Delete</button>
</form>
@endcanGate::before
Panggilan balik before berjalan sebelum semua pemeriksaan gerbang lainnya — berguna untuk memberikan akses menyeluruh kepada administrator.
<?php
Gate::before(function (User $user, string $ability) {
if ($user->isAdmin()) return true; // skip further checks
});Gate::after
after berjalan setelah semua pemeriksaan gerbang. Nilai yang dikembalikan dan bukan null akan menggantikan hasil gerbang.
Mengembalikan Respons
Gerbang dapat mengembalikan objek Response untuk pesan kesalahan khusus.
<?php
Gate::define("publish-post", function (User $user, Post $post) {
return $user->isEditor()
? Response::allow()
: Response::deny("You must be an editor to publish.");
});forUser()
Periksa gerbang untuk pengguna lain, bukan pengguna yang telah diautentikasi.
<?php
if (Gate::forUser($otherUser)->allows("delete-post", $post)) {
// ...
}Pengguna Tamu
Secara bawaan, gerbang otomatis mengembalikan false untuk pengguna yang belum diautentikasi. Beri petunjuk tipe nullable pada pengguna agar pemeriksaan tamu dapat dilakukan.
<?php
Gate::define("view-post", function (?User $user, Post $post) {
return $post->is_published || $user?->id === $post->user_id;
});Gerbang vs Kebijakan
Gerbang adalah fungsi anonim sederhana untuk pemeriksaan ad hoc. Kebijakan adalah kelas untuk otorisasi berbasis model — gunakan kebijakan saat Anda memiliki beberapa tindakan pada model yang sama.
Ringkasan
Gerbang adalah fungsi anonim otorisasi global. Definisikan gerbang di penyedia layanan. Lakukan pemeriksaan dengan Gate::allows(), $this->authorize(), atau @can di Blade.
Pemeriksaan Singkat
Metode pengontrol mana yang secara otomatis melempar 403 saat gerbang gagal?
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Gate: Pemeriksaan Otorisasi Sederhana” gratis?
Ya — teks lengkap “Gate: Pemeriksaan Otorisasi Sederhana” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus PHP Academy, upgrade ke CoddyKit PRO. Kursus PHP Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Gate: Pemeriksaan Otorisasi Sederhana”?
Definisikan dan evaluasi gate untuk logika izin tindakan pengguna. Kamu berlatih PHP Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai PHP Academy?
Tidak diperlukan pengalaman sebelumnya. PHP Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Gate: Pemeriksaan Otorisasi Sederhana” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran PHP Academy ini?
Ya. Setiap pelajaran PHP Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Autentikasi dengan Laravel Breeze
- Melindungi Rute dengan Middleware
- Gate: Pemeriksaan Otorisasi Sederhana
- Policy: Otorisasi Berbasis Model