2012-01-17 122 views
4

this question有關授權之後,我一直在試圖未經授權的用戶重定向到這對請求訪問等等等等MVC3重定向到「未經授權」頁面不工作?

public class RedirectAuthorize:AuthorizeAttribute 
    { 
     protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
     { 
      //base.HandleUnauthorizedRequest(filterContext); 

      filterContext.Result = new RedirectResult("Unauthorized"); 
     } 
    } 

我飾我家控制器的更多詳細信息的頁面增加了一個新的自定義屬性有了這個屬性和正確的(Role =「...」)和這個「有效」..即它按照預期的方式觸及該方法。

我添加了一個名爲Unauthorized.cshtml的共享視圖文件夾的香草視圖,但我只是得到「資源無法找到」404錯誤。

顯示的URL看起來是正確的?

我的猜測是我需要指定一個控制器/操作而不是頁面?但錯誤處理程序重定向到Error.cshtml而不需要控制器?

感謝您的任何幫助。

回答

6

問題是您使用的是RedirectResult這迫使瀏覽器請求給定的URL。但是,當瀏覽器請求它時,沒有匹配的路線。因此它會拋出一個404錯誤。

嘗試

filterContext.Result = new ViewResult { ViewName = "Unauthorized" }; 
+0

如此簡單,如此明顯。 (所以我爲什麼沒有想到這一點!) – BlueChippy 2012-01-17 06:42:34

相關問題