كيف يمكنك وحدة اختبار ترخيص صفحة الويب باستخدام ASP.NET MVC؟

StackOverflow https://stackoverflow.com/questions/131723

  •  02-07-2019
  •  | 
  •  

سؤال

لنفترض أن لديك صفحة ملف شخصي لا يمكن الوصول إليها إلا من خلال مالك هذا الملف الشخصي.هذه الصفحة الشخصية موجودة في:

المستخدم/الملف الشخصي/{userID}

الآن، أتخيل أنه من أجل منع وصول المستخدمين الآخرين إلى هذه الصفحة، يمكنك هيكلة وظيفة ملف تعريف فئة UserController الخاصة بك للتحقق من هوية الجلسة الحالية:

HttpContext.Current.User.Identity.Name

إذا كان المعرف يطابق المعرف الموجود في عنوان url، فيمكنك المتابعة.وإلا فإنك تقوم بإعادة التوجيه إلى نوع ما من صفحة الخطأ.

سؤالي هو كيف يمكنك اختبار وحدة شيء مثل هذا؟أعتقد أنك بحاجة إلى استخدام نوع من حقن التبعية بدلاً من HttpContext في وحدة التحكم لإجراء الفحص، لكنني غير واضح ما هي أفضل طريقة للقيام بذلك.أي نصيحة قد تكون مساعدة.

هل كانت مفيدة؟

المحلول 2

انتهى بي الأمر باستخدام "UserNameFilter" الموضح في كازي منظور مشاركة مدونة.يعمل مثل السحر وسهل اختبار الوحدة.

نصائح أخرى

الرابط أعلاه هو فكرة جيدة.أود أيضًا أن أضيف أنه بدلاً من التحقق برمجيًا من قيمة User.Identity.Name، يجب عليك استخدام سمات التفويض كما هو موضح في المقالة:

http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx

ربما يمكنك القيام بذلك باستخدام مزيف لسياق وحدة التحكم.تحقق من هذا المقال: http://stephenwalther.com/blog/archive/2008/07/01/asp-net-mvc-tip-12-faking-the-controller-context.aspx

هذا هو المكان الذي تأتي فيه السخرية باستخدام HttpContext المزيف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top