我有一个MVC网站,它使用AD身份验证为同样是CRM 2011的用户显示数据。用户的CRM权限取决于他们在CRM中的角色,因此目前OnActionExecuting
方法获取执行用户的权限域名,并查询CRM的角色。如果他们没有有效的角色,则会返回无效的权限视图。
对CRM的调用很慢,如果必须为每个请求发生,就会变得昂贵。我可以在MVC 3 release notes中看到过滤器被积极缓存,但不太确定这对我意味着什么。
我希望能够根据用户的域名缓存用户的权限,但听起来可能已经发生了吗?
答案 0 :(得分:2)
如果你是referring to following statement,我认为你明白这一点是错误的:
在ASP.NET MVC 3中,过滤器被更积极地缓存。因此, 任何不正确地存储实例状态的自定义操作过滤器都可能 被打破了。
这并不意味着缓存过滤器的结果。这意味着过滤器本身将被缓存,并将被重用于多个请求。它与CRM插件相当。你不应该跟踪它中的状态,或者如果你这样做,你必须小心不要输入并发的乐趣。
在您的情况下,我会使用例如MemoryCache来缓存用户在内存中的角色/权限一段时间。