2012-01-17 12 views
4

承認についてthis questionを求めた後、私は私のホームコントローラを飾ってきたなどなどアクセスMVC3「Unauthorized」ページへのリダイレクトは機能しませんか?

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

関連する問題