تكرار السؤال: …
الإجابة المختصرة
ينفذ كل وسيط الكود قبل استدعاء next() ثم ينتظر عودة الاستجابة؛ والترتيب حرج لأن وسيط المصادقة UseAuthentication يجب أن يسبق التفويض UseAuthorization.
الشرح
يتم بناء الـ Pipeline كحلقات دائرية متداخلة من دوال RequestDelegate. إذا عكست الترتيب وجعلت UseAuthorization تسبق UseAuthentication، ستفحص الصلاحيات قبل التحقق من هوية المستخدم وستفشل كل الطلبات برمز 401 أو 403. القاعدة الذهبية هي: معالجة الأخطاء أولاً (UseExceptionHandler)، تليها التوجيه والـ CORS، ثم المصادقة، ثم الصلاحيات، وأخيراً الـ Endpoints.
مثال بالكود
app.UseExceptionHandler("/error");
app.UseRouting();
app.UseCors();
app.UseAuthentication();
app.UseAuthorization();
app.MapControllers();أخطاء شائعة
- وضع app.UseCors() في نهاية الـ pipeline بعد التوجيه والمصادقة مما يمنع إرسال ترويسات CORS في حالات أخطاء المصادقة.