如何在MVC2中创建一个简单的登录页面

时间:2010-11-07 10:57:10

标签: asp.net-mvc-2 routes

我正在尝试创建http://domain.com/NotAuthorized页面。

转到Views\Shared并添加了一个名为NotAuthorized的视图女巫来源文件名NotAuthorized.aspx

alt text

在我写的路线中

routes.MapRoute(
    "NotAuthorized", // Route name
    "NotAuthorized.aspx"  // Route Url
);

但每次我访问http://domain.com/NotAuthorized时都会收到错误

  

无法找到资源。

我缺少什么?

如何在View("NotAuthorized")中不使用Controller来访问此内容,换句话说,不通过任何控制器。

2 个答案:

答案 0 :(得分:1)

如果不通过控制器,则无法直接访问视图。无法直接提供Views文件夹中的所有页面。因此,实现所需内容的一种方法是编写自定义[Authorize]属性并设置错误页面:

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
    if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
    {
        base.HandleUnauthorizedRequest(filterContext);
    }
    else
    {
        filterContext.Result = new ViewResult { ViewName = "NotAuthorized" };
    }
}

答案 1 :(得分:0)

我仍然不知道如何完成它,但我所做的是使用Home Controller并创建一个名为NotAuthorized

的Action
public ActionResult NotAuthorized()
{
    return View();
}

添加像

这样的路线
routes.MapRoute(
    "NotAuthorized", // Route name
    "NotAuthorized", // URL with parameters
    new { controller = "Home", action = "NotAuthorized" } // Parameter defaults
);

现在工作正常,我可以轻松地将我的业务逻辑的任何部分重定向到/Notauthorized,这将很好地路由。