Asp.net mvc 关于mvc中的路由
我在mvc3应用程序中有一个类似www.abc.com的url,我设置了一个默认的map.route,如下所示Asp.net mvc 关于mvc中的路由,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我在mvc3应用程序中有一个类似www.abc.com的url,我设置了一个默认的map.route,如下所示 routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "UserLogOnPage", action = "LogOn", id = UrlParameter.Optional } // Param
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 Method:Logon,在浏览器中,url也会显示www.abc.com,这是正确的,但是当输入像www.abc.com/UserLogOnPage/Logon这样的url时,我希望像www.abc.com这样的url不是www.abc.com/UserLogOnPage/Logon,我如何才能做到这一点
谢谢我几乎可以肯定这并不是您真正想要做的-路由配置将导致任何URL被重定向到
登录
页面
从url上看,您所追求的实际上是身份验证,即,如果匿名用户访问www.abc.com
,他们将被要求在访问该网站之前登录
幸运的是,MVC已经完成了艰苦的工作,您需要做的就是决定如何让它工作。可以在不同级别应用身份验证,范围由设置的位置决定
Global.asax-每个操作都需要身份验证
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
...
filters.Add(new AuthorizeAttribute());
}
控制器-特定控制器内的所有操作都需要身份验证
[Authorize]
public class AccountController : Controller
{
...
}
操作-仅此操作需要身份验证
[Authorize]
public ActionResult AccountDetails()
{
...
}
要确定由于authorizationAttribute
而要将用户重定向到哪个页面,可以在web.config
中配置authorization
部分
<authentication mode="Forms">
<forms loginUrl="~/UserLogOnPage/LogOn" />
</authentication>
您需要url映射才能在global.asax中将www.abc.com/UserLogOnPage/Logon重定向到www.abc.com