我已经创建了一个新的带有区域的ASP.NET MVC项目,如果用户访问该区域,我将尝试将控制器操作设置为默认控制器操作。
我添加了一个名为"登录"的区域,现在我有了Areas/Login/
,并添加了LoginController
。
我正在尝试将此控制器设置为在用户导航到网站时调用。如果我在浏览器www.test.com/Login/Login
中键入,我可以访问它,但我不知道如何在global.asax
中设置路由以指向该控制器作为默认值。
如何在ASP.NET MVC中做到这一点?
创建区域时,MVC是否没有在Areas/[AreaName]文件夹下创建[AreaName]AreaRegistration
类?在那里你会发现区域注册看起来与此类似。将默认参数的controller =
部分修改为默认情况下要使用的控制器名称(登录名):
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Login_default",
"Login/{controller}/{action}/{id}",
new { controller = "Login", action = "Index", id = UrlParameter.Optional }
);
}
如果你用[Authorize]
属性装饰你的HomeController(或者实际上是所有需要登录的控制器),如果人们没有登录,ASP.NET MVC会自动将他们重定向到登录屏幕。
示例用法:
[Authorize]
public ActionResult Home()
{
}
此外,您可能需要了解Open Redirect攻击漏洞(并进行修复)。