关于mvc中的路由

时间:2014-09-20 07:28:18

标签: asp.net-mvc asp.net-mvc-4

我在mvc3应用程序中有一个像www.abc.com这样的网址,我设置了这样的默认map.route

routes.MapRoute(
  "Default", // Route name
   "{controller}/{action}/{id}", // URL with parameters
   new { controller = "UserLogOnPage", action = "LogOn", id = UrlParameter.Optional } // Parameter defaults
);

现在当我输入www.abc.com并输入它时会发生什么事情转到Controller:UserLogOnPage方法:登录和浏览器网址也显示www.abc.com哪个是正确的,但输入网址时如www.abc .com / UserLogOnPage /登录相同的方法和控制器,我想要网址如www.abc.com而不是www.abc.com/UserLogOnPage/Logon我该怎么做。

谢谢

1 个答案:

答案 0 :(得分:1)

我几乎可以肯定这不是您实际要做的事情 - 该路由配置会导致任何网址被重定向到LogOn页面。

通过网址查看看起来您所追求的是实际身份验证,即如果匿名用户访问www.abc.com,他们会被要求登录才能访问该网站。< / p>

幸运的是,MVC已经完成了所有你需要做的事情,决定你希望它如何工作。身份验证可以在不同级别应用,范围取决于通过AuthorizeAttribute设置的位置。

Global.asax - 每项操作都需要身份验证

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
    ...
    filters.Add(new AuthorizeAttribute());
}

控制器 - 特定控制器内所有操作所需的身份验证

[Authorize]
public class AccountController : Controller
{
    ...
}

操作 - 仅限此操作所需的身份验证

[Authorize]
public ActionResult AccountDetails()
{
    ...
}

要确定您希望用户因AuthorizeAttribute而重定向到哪个页面,您可以在authorization

中配置web.config部分
<authentication mode="Forms">
    <forms loginUrl="~/UserLogOnPage/LogOn" />
</authentication>