代码之家  ›  专栏  ›  技术社区  ›  balexandre

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

  •  0
  • balexandre  · 技术社区  · 15 年前

    我想创造一个 http://domain.com/NotAuthorized

    去了 Views\Shared 并添加了一个名为 NotAuthorized witch发起文件名 NotAuthorized.aspx

    alt text

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

    但每次我进入 http://domain.com/NotAuthorized/未授权

    找不到资源。

    如何在不使用 View("NotAuthorized") Controller 换句话说,不通过任何控制器。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Darin Dimitrov    15 年前

    不通过控制器就不能直接访问视图。中的所有页 Views 无法直接为文件夹提供服务。因此,实现您所寻找的目标的一种方法是编写一个自定义 [Authorize] 属性并设置错误页:

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        if (!filterContext.HttpContext.User.Identity.IsAuthenticated)
        {
            base.HandleUnauthorizedRequest(filterContext);
        }
        else
        {
            filterContext.Result = new ViewResult { ViewName = "NotAuthorized" };
        }
    }
    
        2
  •  0
  •   balexandre    15 年前

    Controller 并创建一个名为 NotAuthorized

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

    并添加一个类似于

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

    现在运行良好,我可以很容易地将业务逻辑的任何部分重定向到 /Notauthorized 这条路很好。