3

我已经创建了一个带有区域的新 ASP.NET MVC 项目,并且我正在尝试将控制器操作设置为用户访问该区域时的默认控制器操作。

我现在添加了一个名为“登录”的区域Areas/Login/,并且添加了LoginController.

我正在尝试将此控制器设置为在用户导航到网站时调用。如果我在浏览器中输入,我可以访问它,www.test.com/Login/Login但我不知道如何设置路由global.asax以指向该控制器作为默认值。

我如何在 ASP.NET MVC 中做到这一点?

4

2 回答 2

5

创建区域时,MVC 没有[AreaName]AreaRegistration在 Areas/[AreaName] 文件夹下创建类吗?在那里,您会找到与此类似的区域注册。将 defaults 参数的部分修改为controller =您要默认使用的控制器名称(Login):

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Login_default",
            "Login/{controller}/{action}/{id}",
            new { controller = "Login", action = "Index", id = UrlParameter.Optional }
        );
    }
于 2011-06-24T20:12:23.203 回答
2

如果您使用该属性装饰您的 HomeController(或者实际上是所有需要某人登录的控制器),则[Authorize]ASP.NET MVC 将自动将未登录的人重定向到登录屏幕。

示例用法:

[Authorize]
public ActionResult Home()
{
}

此外,您可能需要阅读Open Redirect 攻击漏洞(并修复)

于 2011-06-24T19:42:32.010 回答