كيفية تعطيل تفويض المطالبات لكل طلب (على أساس عنوان URL) في WCF؟
-
20-12-2019 - |
سؤال
لدي خدمة WCF التي تستخدم التفويض القائم على المطالبات.
ما أريد القيام به هو إسناد عملية باستخدام ملف ClaimsPrincipalPermissionAttribute
ولدي مشغل التحقق من التفويض مرة واحدة فقط في العرف الخاص بي ClaimsAuthorizationManager
.ومع ذلك، أجد أن فحص التفويض هذا قد تم تشغيله مرتين؛مرة واحدة لعنوان URL ثم مرة ثانية للعملية نفسها.
لا يمكنني العثور على الكثير من المعلومات حول هذا الموضوع، ولكن ما وجدته يشير إلى أن هذا حسب التصميم.هل من الممكن أن أقوم بالكتابة فوق هذا السلوك وعدم إجراء أي تفويض على عنوان URL، والتفويض فقط بناءً على العملية؟
ليس لدي أي اهتمام بالتفويض بناءً على عناوين URL، وأفضل حقًا تجنب إضافة مطالبات لكل عنوان URL لأنه من المحتمل أن يكون لدي الكثير منها وقد تتغير في المستقبل.
لقد قرأت العديد من المقالات، وشاهدت مقاطع فيديو من دومينيك باير حول هذا الموضوع، وعلى الرغم من أنني تعلمت الكثير منها، إلا أنني ما زلت لا أستطيع العثور على إجابة لهذا السؤال.هل هذا ببساطة غير ممكن ولا بد لي من التعامل مع الاضطرار إلى التفويض بناءً على عنوان URL أيضًا؟
المحلول
لا يمكنك تغيير هذا السلوك - ما فعلته هو كتابة سمة إذن مطالبات مخصصة تصدر أنواعًا مختلفة من المطالبات.بهذه الطريقة يمكنني التمييز بين الاستدعاء لكل طلب والسمة الصريحة.
أو حزمة Thinktecture.IdentityModel nuget.