私は、ユーザーのアクセス権に応じて機能を持つパネルを作成するために、カスタムクレームベースの承認を使用しています。ユーザークレームはキャッシュICashClient
に保存されます。 特定のメニューは特定のコントローラーメソッドを参照するだけです。PostSharp AOPを使用してメソッドの使用を承認する
問題: 特定のメソッドへの直接リンクを入力するだけでアクセス権が失われているため、利用できないと思われるメソッドを使用することは可能です。
私の考えは、これらの特定のメソッドをタグ付けして、それらを実行不可能にしないようにすることです。
もう一度OnEntry
メソッドで承認します。
以下の例では、サーブサーへのリクエストがAjax
であるかどうかを確認することができます。私は現金から既存のデータを照会するために、このOnEntry
方法の文脈の中で持っているかどうpossiblities
public override void OnEntry(MethodExecutionArgs args)
{
var controller = args.Instance as MyController;
if (controller != null)
{
if (!controller.Request.IsAjaxRequest())
throw new Exception ($"{args.Method.Name} invalid AJAX request");
}
base.OnEntry(args);
}
? この現金をそこからアクセスできるようにするにはどうすればよいですか?
編集:
public TResult ExecuteWithCache<TResult>(ICustomQuery<TResult> query)
{
try
{
//class for creating fingerprint of query
var customQueryHash = (ICustomQueryHash<TResult>)query;
//fingerprint of the query
var queryString = customQueryHash.GetQueryHash();
//cash which might holds data
var cachedResult = _cacheClient.Get<TResult>(queryString);
...
}
catch(){}
}
_cashClient
拡張ICashClientの実装です: 私のコントローラメソッドを次のようしている要求されたデータを取得するためにそう呼ばれるQueryProcessor
(依存性注入を使用)を使用します。
現時点でコードからキャッシュにアクセスする方法の例を教えてください。 –
更新された説明 –