我在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我该怎么做。
谢谢
答案 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>