سؤال
نحن بحاجة إلى استبدال نظام القائمة في تطبيق ASP.NET الرئيسي لدينا.لذلك من الطبيعي أن ننظر إلى ASP.NET SiteMapProvider
و Menu
ضوابط.ومع ذلك، نحتاج أيضًا إلى قدر كافٍ من الأمان لمنع المستخدمين من إدخال عناوين URL مباشرةً التي لا ينبغي لهم الوصول إليها.يمكننا القيام بذلك عن طريق وضع <location>
الإدخالات في web.config وتأمينها بشكل فردي ولكن هذا سيكون بمثابة بيتا لإدارتها عبر خوادم ويب متعددة.
هل يوجد Provider
التي يمكن استخدامها لتوفير ما يعادل <location>
إدخالات؟لم أتمكن من العثور على واحد، وهو أمر محبط قليلاً نظراً لوجود موقع التكوين فصل.
وبدلاً من ذلك، هل يوجد خيار تكوين نفتقده في SiteMapProvider والذي سيمنع المستخدمين من الوصول إلى عناوين URL التي لا ينبغي عليهم الوصول إليها؟
المحلول
لماذا لا تقوم بإنشاء حقوق وملفات تعريف لإدارة الصفحات التي يمكن للمستخدم رؤيتها؟عادةً ما أقوم بإنشاء فئة مستخدم تنفذ واجهة الأمان IPrincipal.في كل طلب إلى التطبيق الخاص بك، يمكنك التحقق من حقوق مستخدم معين وإخراج عقد SiteMap المسموح بها لهذا المستخدم.