【发布时间】:2012-08-06 08:14:01
【问题描述】:
我正在使用 MVC 3。众所周知,MVC 根据控制器中操作方法的名称设置 URL,但我需要稍作修改。
出于安全目的,我不想在 URL 中显示我的操作方法的名称。因此,如果我在 Home 控制器中有 index 方法,URL 将是这样的:www.server/home/index 但我想在浏览器中显示www.server/home/test。我可以通过使用[ActionName] 属性来做到这一点,但是还有其他方法吗?
我可以为此使用自定义路由处理程序吗?
【问题讨论】:
-
隐藏方法名的安全目的是什么?
-
取决于您的需求。那将“测试”指的是?每个控制器是否有多个操作?您可以使用路由来实现这一点,但如果名称特定于每个动作(和自定义),那么您将不得不为每个动作添加一个路由,这对我来说似乎毫无意义(在这种情况下 [ActionName] 听起来更可行的选项) .如果“测试”是您可以检索或有办法找出的特定内容,那么路由或扩展控制器可能是一个解决方案。让我知道你的目标是什么,我会帮助你:)
-
现在我只需要为一种操作方法执行此操作,但要使用自定义路由处理程序。 @Pluc
-
说实话我不太确定,但是我的老师告诉我,有时需要隐藏特定的方法名,因为如果有黑客知道方法名,那么我相信这会很容易破解代码,因为他知道有一种特殊的方法可以从中获得一些有价值的信息。 @AlexC
标签: asp.net-mvc url-rewriting asp.net-mvc-routing