2010-12-18 77 views
1

我有一個受AuthorizeAttribute保護的控制器。當授權失敗時,我只得到一個空白頁面。如果我覆蓋OnAuthorization()我可以看到,在致電base.OnAuthorization()filterContext.Result爲空(爲什麼?)。如果我重寫OnException()並設置一個斷點它永遠不會命中。可以請某人解釋它應該如何工作?我怎樣才能讓它重定向到指定的頁面?我可以在哪裏注入以記錄失敗的授權嘗試(最好不要編寫自定義過濾器)?如果它很重要,我使用MVC 3 RC1。當認證模式設置爲Windows時,ASP.NET MVC中的AuthorizeAttribute行爲

回答

7

要重寫AuthorizeAttribute.HandleUnauthorizedRequest方法。下面是默認的實現:

protected virtual void HandleUnauthorizedRequest(AuthorizationContext filterContext) { 
    // Returns HTTP 401 - see comment in HttpUnauthorizedResult.cs. 
    filterContext.Result = new HttpUnauthorizedResult(); 
} 

你不是要設置的結果是RedirectResult(或根據您所需要的邏輯一些其他的結果)。這也是記錄的好地方。

相關問題