كيفية إعداد التوجيه لقسم الادارة بلدي في ASP.NET MVC؟

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

سؤال

وعادة عناوين URL لتبدو وكأنها معيار: www.example.com/controller/action

والآن أريد أن الإعداد قسم إدارتي مثل:

 www.example.com/admin/
 www.example.com/admin/user/list
 www.example.com/admin/content/add
etc.

وهكذا والشكل هو: www.example.com/admin/controller/action

وأنا لا يمكن أن يبدو لمعرفة كيفية إعداد الطرق بحيث يبدو مثل ما ورد أعلاه.

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

المحلول

وتحتاج فقط لتعيين مسار جديد مع قسم 'مشرف' ضمنية في بداية تعريف الطريق.

وعلى سبيل المثال هذا إضافة إلى طرق بك في RegisterRoutes في ملف Global.asax.cs والتأكد من أنها تظهر فوق المسار الافتراضي (على افتراض انك لم تقم بإضافة طرق أخرى):

routes.MapRoute(
    "Default",                                              
    "admin/{controller}/{action}/{id}",                     
    new { controller = "Home", action = "Index", id = "" } 
);

ملحوظة: في 'مشرف' جزء ضمني في بداية تعريف مسار

.

ملحوظة 2: إذا قمت بإضافة مسارات أخرى خارجة الافتراضي سوف تحتاج إلى التأكد من أمر الطرق بشكل صحيح

وهنا هو وجود صلة لبلوق وظيفة جيدة من سكوت غوثري التوجيه MVC بشأن : <لأ href = "http://weblogs.asp.net/scottgu/archive/2007/12/03/asp-net-mvc-framework-part-2-url-routing.aspx" يختلط = "نوفولو noreferrer" > URL التوجيه

نصائح أخرى

والجواب كيلسي هو الحق على العلامة، ولكن كنت أريد أن أضيف شيئا للمناقشة. وثمة خيار آخر هو أن لا يكون في الواقع الطرق "مشرف" على الإطلاق، ولكن بدلا من ذلك تتطلب المشرف جلسات مصادقة للوصول إلى الواقع عناوين المواقع المحظورة.

وهذا هو في كثير من الأحيان كيف تتم الأمور في تطبيقات مريحة "التقليدية". جهاز تحكم يمثل نوع المورد الذي التلاعب، والعمل هو الفعل، والرقم هو معرف فريد لعضو محدد من تلك الموارد.

وبعبارة أخرى، بدلا من الاضطرار:

/content/list (for normal users)
/admin/content/add (for admins)

وسيكون لديك

/content/list (for everyone)
/content/add (for admin, but must be authenticated to work)

واضاف / المشرف / إلى URL لا تضيف قيمة حقيقية أي BENIFITS (ربما باستثناء أنه يمكنك كتابة منطق تأمين الخاص بك مع مجرد قاعدة واحدة ضد أي شيء تحت / المشرف)، ولكن المفاضلة هو طرق أكثر تعقيدا وكسر مستوى مريح . كسر الممارسات القياسية ليس في حد ذاته أمرا سيئا، ولكن يجب عليك أن تنظر أنها هي المعيار لسبب ما، وإلا إذا كان لديك فوائد محددة لكسر لهم، قد تفكر في الانضمام إليهم.

وتجدر الإشارة إلى أنه في كلتا أساليب URL عليك أن تكون مصادقة المستخدم، وإلا يمكن لأي شخص استخدامها.

في ASP.NET MVC، يمكنك تقييد الوصول إلى إجراءات (أو حتى التحكم بأكملها) على أساس مستوى المستخدم باستخدام ActionFilters. عن طريق تزيين إجراءات المشرف الوحيد مع هذه المرشحات، يمكنك التأكد يمكن للمستخدمين ادارى فقط مصادقة استخدامها في الواقع.

ومقروءة على دخول بلوق سكوت قو أو روب كونري إضافة للحصول على مزيد من المعلومات.

واعتبارا من MVC الإصدار 2 لديهم واضاف "المنطقة" المفهوم الذي يسمح لك أن تفعل هذا بشكل صحيح :) هنا هو <وأ href = "http://weblogs.asp.net/scottgu/archive/2009/07/ 31 / آسيا والمحيط الهادئ، صافي MVC-V2-المعاينة-1-released.aspx "يختلط =" نوفولو noreferrer "> آخر ScottGu حول MVC 2 معاينة .

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