ASP.NET MVC的好處之一(更一般地說,.NET 3.5 SP1中所有ASP.NET通用的URL路徑引擎)都是可以靈活配置URL的映射到您喜歡的任何文件夾/文件結構。這意味着它比WebForms在開始構建項目之後修改網址的日子要容易得多。
爲了您的具體問題:
一個管理控制器與產品控制器 - 一般情況下,指導是保持控制器集中,使他們更容易測試和維護。出於這個原因,我建議使用CRUD操作的每個對象類型(如Product)使用單個控制器。
/管理/產品/創建
/管理/產品/編輯/ 34或/管理/產品/編輯/紅鞋子(如果名是唯一的)
:在你的案例在任何一種情況下,創建,編輯,Deatils操作都將位於ProductController中。您可能只有「管理員操作」(如「創建」和「編輯」)的自定義路由,以限制其使用(並將「管理員」文本添加到網址),然後詳細信息操作可供所有訪問者使用。
- 保護管理視圖 - 使用MVC記住的一個重要事實是:所有請求都直接轉到控制器,而不是視圖。這意味着舊的「使用web.config保護目錄」不適用於(通常)MVC以保護您的管理員。相反,您現在應該直接將安全性應用於控制器。限於特定的用戶角色 -
- [授權] - 只需檢查該用戶登錄
- [授權(角色=「管理員」)]:這可以容易地通過使用屬性到控制器類等實現
- [授權(用戶=「喬」)] - 限制對特定用戶
你甚至可以創建「管理」,在您的網站,並限制訪問這些觀點通過實施意見自定義路線您的授權檢查URL路由,如下所示:
routes.MapRoute(
"Admin",
"Admin/{controller}/{action}",
new { controller = "Product", action = "Index" },
new { authenticated= new AuthenticatedConstraint()}
);
凡AuthenticatedConstraint看起來像:斯蒂芬·瓦爾特博客
using System.Web;
using System.Web.Routing;
public class AuthenticatedConstraint : IRouteConstraint
{
public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
{
return httpContext.Request.IsAuthenticated;
}
}
好細節: ASP.NET MVC Tip #30 – Create Custom Route Constraints
Thansks,我不是授權用戶的點。我只想看看我應該如何形成我的網址。或者做一些很好的建議。 :) – vincentw56 2009-09-11 17:04:11