midLaravel
What is Laravel authorization policy vs gate system?
Updated May 16, 2026
Short answer
Policies handle model-based authorization, while gates handle general authorization logic.
Deep explanation
Gates are simple closures used for authorization checks, whereas policies are dedicated classes tied to models. Policies are more structured and scalable for complex applications. Laravel uses both through the Gate facade and Policy classes registered in AuthServiceProvider.
Real-world example
Used in CMS systems where users can only edit their own posts.
Common mistakes
- Using gates for complex model logic instead of policies.
Follow-up questions
- When should you use policies over gates?
- How are policies auto-discovered?