如何让ASP.NET MVC为区域设置默认的控制器和操作



我已经创建了一个新的带有区域的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攻击漏洞(并进行修复)。

相关内容

  • 没有找到相关文章

最新更新