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