【发布时间】:2016-12-25 03:25:20
【问题描述】:
我正在使用基于自定义声明的授权,以便根据用户访问权限创建具有功能的面板。用户声明存储在缓存ICashClient 中。
特定的菜单只是引用某些控制器方法。
问题是: 只需输入特定方法的直接链接,就可以使用由于缺少访问权限而不应使用的方法。
我的想法是创建一个方面,以便可以标记这些特定方法,以防止它们被非法执行。
我想再次在OnEntry 方法中进行授权。
以下示例允许检查对服务器的请求是否为 Ajax 类型。
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);
}
在这种OnEntry 方法的上下文中,我有什么可能从现金中查询现有数据?
我怎样才能从那里获得这笔现金?
编辑:
我的控制器使用(使用依赖注入)所谓的QueryProcessor 来检索具有以下方法的请求数据:
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 的实现。
【问题讨论】:
-
您能否举例说明您目前如何从代码中访问缓存?
-
更新描述