2011-09-16 13 views
3

コントローラの認可のカスタム属性があります。詳細はviewed hereです。ASP.NET MVCのコントローラ属性に基づいて、ビューモデルにエラーメッセージを追加します。

このカスタム属性がfalseを返す場合は、ログイン画面に戻ります。属性がfalseを返す場合は、ログイン画面のモデルにエラーを追加します。

アイデア?

+0

これは、既存のSOの質問の重複のようになります。[カスタムメッセージとMVC 3 AuthorizeAttributeリダイレクト](HTTP ://stackoverflow.com/questions/5922838/mvc-3-authorizeattribute-redirect-with-custom-message) –

答えて

4

は、ここで私はそれをやってしまった方法です:

protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext) 
{ 
    if (filterContext.HttpContext.User.Identity.IsAuthenticated) 
    { 
     var result = new ViewResult(); 
     result.ViewName = "NotAuthorized"; 
     result.MasterName = "_Layout"; 
     filterContext.Result = result; 
    } 
    else 
     base.HandleUnauthorizedRequest(filterContext); 
} 
0

TempData機能を見てください。基本的には、ViewDataと似ていますが、次のリクエスト(セッションを使用)に繋がります。したがって、モデルエラーをここに保存して(必要に応じて適切にまとめてください)、ログインページアクションでリダイレクトした後にモデルエラーを探します。答えを探している人のために

関連する問題