2010-12-18 4 views
1

コントローラがAuthorizeAttributeで保護されています。認証が失敗すると、空のページになります。私がOnAuthorization()をオーバーライドすると、base.OnAuthorization()filterContext.Resultと呼んだ後で、それがわかることがあります(なぜ?)。私がOnException()を上書きし、ブレークポイントを設定した場合、決してヒットしません。それはどのように動作するはずです説明することができますか?特定のページにリダイレクトするにはどうすればよいですか?失敗した認証の試行をログに記録する場所はどこにありますか(カスタムフィルタを書き留めない方が良い)私はMVC 3 RC1を使用します。認証モードがWindowsに設定されている場合のASP.NET MVCでのAuthorizeAttribute動作

答えて

7

AuthorizeAttribute.HandleUnauthorizedRequestメソッドをオーバーライドする必要があります。あなたが代わりにRedirectResult(またはご希望のロジックに応じて、他のいくつかの結果を)する結果を設定することをお勧めします

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

:ここではデフォルトの実装です。これはロギングにも適しています。