2010-11-07 66 views
0

我正在嘗試創建一個http://domain.com/NotAuthorized頁面。如何在MVC2中創建簡單登錄頁面

Views\Shared並增加了一個名爲NotAuthorized女巫觀源於NotAuthorized.aspx

alt text

在我的路線,我寫

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

但我每次訪問http://domain.com/NotAuthorized時候,我得到一個錯誤的文件名

找不到資源。

我錯過了什麼?

如何可以訪問此無需在Controller使用View("NotAuthorized"),換句話說,沒有經過任何的控制器。

回答

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" }; 
    } 
} 
+0

我只是缺少'filterContext.Result =新的ViewResult {VIEWNAME =「NotAuthorized」};'因爲我已經有了我的'RequiresRoleAttribute',但我重定向爲'filterContext.HttpContext.Response.Redirect(notAuthorizedUrl,true);'。感謝您的高舉。 – balexandre 2010-11-07 13:19:13

0

我仍然對如何完成它不知道,但我所做的是使用主Controller,創造NotAuthorized

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

稱爲一個動作,加上像

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

和路徑現在工作正常,我可以輕鬆地將我的業務邏輯的任何部分重定向到/Notauthorized,這將很好地路由。