当前位置:  开发笔记 > 编程语言 > 正文

如何在ASP.NET MVC中为我的管理部分设置路由?

如何解决《如何在ASP.NETMVC中为我的管理部分设置路由?》经验,为你挑选了2个好方法。

通常我的网址看起来像标准: 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

我似乎无法弄清楚如何设置路线,所以它看起来像上面.



1> Kelsey..:

您只需要在路径定义的开头用硬编码的"admin"部分映射新路径.

例如,将其添加到文件中的路线中RegisterRoutes,Global.asax.cs并确保它显示在默认路线上方(假设您尚未添加其他路线):

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

注意:'admin'部分在路由定义的开头硬编码.

注意2:如果您添加了超出默认值的其他路线,则需要确保您的路线正确订购.

以下是Scott Guthrie关于MVC路由的好博客文章的链接:URL路由


使用东西可以通过添加`admin /`前缀来使其他控制器无法访问.您也可以通过yoursite/admin/Home访问yoursite/Home.

2> Matt..:

凯尔西的回答是正确的,但我想在讨论中加入一些内容.另一种选择是根本不具有"管理"路由,而是需要管理员认证的会话来实际访问受限制的URL.

这通常是在"传统"RESTful应用程序中完成工作的方式.您的控制器表示您正在操作的资源类型,操作是动词,id是该资源的特定成员的唯一标识符.

换句话说,而不是:

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

你将会拥有

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

添加/ admin /到URL并没有真正添加任何好处(除非您可以使用针对/ admin下的任何内容的单一规则编写您的安全逻辑),但权衡更复杂的路由和破坏标准RESTful.打破标准做法本身并不是一件坏事,但你应该认为它们是标准的,除非你有打破它们的特定好处,你可以考虑坚持它们.

应该注意的是,在两种URL样式中,您都需要对用户进行身份验证,否则任何人都可以使用它.

在ASP.NET MVC中,您可以使用ActionFilters根据用户级别限制对操作(甚至整个控制器)的访问.通过使用这些过滤器修改管理员操作,您可以确保只有经过身份验证的管理员用户才能实际使用这些过滤器.

阅读Scott Gu的博客文章或Rob Connery的帖子了解更多信息.

推荐阅读
低调pasta_730
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有