私は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;
}
}
}
そして、ちょうどMyCaching
前MyUserAuth
を置きますか?
を通じて、MyCachingにチェックすることができた、役割または認証の主張「isAdmin」を設定することができますか? MyCachingでチェックすることができます – Bombinosh