انتقل إلى محتوى الدرس

Enforcing Access With Gate Authorize إلزام الصلاحية عبر Gate Authorize

التمييز الدقيق بين المصادقة والتفويض وتعريف بوابات الصلاحيات البرمجية عبر Gate::define وفحصها بـ allows و authorize.
1 صفوف تعليمية
إطار العمل Laravel
0 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

بدلاً من كتابة جملة شرطية بـ Gate::denies واستدعاء abort(403) يدوياً في كل دالة متحكم، استدعِ دالة Gate::authorize في سطر واحد نظيف. عند رفض الصلاحية، تطلق هذه الدالة استثناء AuthorizationException الذي يحوله Laravel تلقائياً إلى استجابة 403 قياسية.

  • حارس بسطر واحد (One-Line Guard): يغني عن تكرار الجمل الشرطية ودالة الإيقاف اليدوية في كل إجراء.
  • إطلاق الاستثناء تلقائياً (Auto 403): يوقف تنفيذ الدالة فوراً ويعرض صفحة 403 أو استجابة JSON مقابلة.
  • نظافة كود المتحكم (Clean Action): لا يتم تنفيذ الأسطر التالية لدالة authorize إلا بعد ثبوت الصلاحية.
PHP
public function update(Request $request, Post $post)
{
    Gate::authorize('update-post', $post);

    $post->update($request->validated());
    return redirect()->route('posts.show', $post);
}