2016-04-22 8 views
3

私はa similar questionに質問しましたが、答えは全く必要ありませんでした。これは正しいアプローチだが、ここでは役に立たない。コントローラ内のアクション間のプロパティの交換

[MyCaching] 
[MyUserAuth] 
public class MyMagicController:Controller { 
    public ActionResult GetLoans() { 
     return GetLoansForThisUser(); 
    } 
} 

MyUserAuthは、ユーザーがデータを取得する権限を持っている場合、チェック属性、次のとおりです。

は、私は、次のアクションを持っています。この情報はDBから取得され、HttpContextを通じて(純粋に)取得することはできません。いくつかのユーザーは管理者であり、もう少し見るべきです。

ユーザーが通常のアクセス権(ユーザーの90%など)を持っている場合は、[MyCaching]のキャッシュメカニズムが開始され、コンテンツがキャッシュから返されます。

管理者の場合、キャッシュは返されず、内容が異なるため、入力しないでください。

だから私は[MyUserAuth]がその情報を[MyCaching]に伝える方法を見つける必要があります。これを達成するための直接的な方法はありますか? そうでない場合、そのためにHttpContextを「誤用」することはできますか?例えば:その後、

public class MyAuthAttribute:AuthenticationAttribute 
    // ... 
    public void CheckPermissions(HttpContext context) { 
     context.Items.Add("isAdmin",true); 
    } 
} 

public class MyCachingAttribute:ActionAttribute { 
    // ... 
    public void GetCache(HttpContext context) { 
     if (context.Items["isAdmin"]) { 
      return // dontcache; 
     } 
    } 
} 

そして、ちょうどMyCachingMyUserAuthを置きますか?

+1

を通じて、MyCachingにチェックすることができた、役割または認証の主張「isAdmin」を設定することができますか? MyCachingでチェックすることができます – Bombinosh

答えて

0

あなたは、あなたが認証の役割/請求isAdminを設定することができない理由のHttpContext

関連する問題