Policy tập trung hóa logic phân quyền. Tạo: php artisan make:policy PostPolicy --model=Post định nghĩa các method như view(), create(), update(), delete().
Ví dụ: public function update(User $user, Post $post) { return $user->id === $post->user_id; }. Dùng trong controller: $this->authorize("update", $post); hoặc inline if (auth()->user()->can("update", $post)).
Lợi ích: quy tắc auth tập trung, tái sử dụng qua nhiều controller, dễ test, dễ đọc. Laravel 11+: AuthServiceProvider đã bị xóa — đăng ký policy bằng Gate::policy() trong AppServiceProvider hoặc để auto-discovery tự động tìm.
Policies centralize authorization logic. Create: php artisan make:policy PostPolicy --model=Post defining methods like view(), create(), update(), delete().
Example: public function update(User $user, Post $post) { return $user->id === $post->user_id; }. Use in controller: $this->authorize("update", $post); or inline if (auth()->user()->can("update", $post)).
Benefits: centralized auth rules, reusable across controllers, testable, readable. Laravel 11+: AuthServiceProvider was removed — register policies using Gate::policy() in AppServiceProvider or rely on auto-discovery.