1

我有一个 MVC 网站,它使用 AD 身份验证来为同样是 CRM 2011 的用户显示数据。用户的 CRM 权限由他们在 CRM 中的角色决定,所以目前该OnActionExecuting方法获取执行用户的域名,并查询 CRM 以获取他们的角色。如果他们没有有效的角色,则会返回无效的权限视图。

对 CRM 的调用速度很慢,如果每个请求都必须调用,可能会变得很昂贵。我可以在MVC 3 发行说明中看到过滤器被积极缓存,但不太确定这对我意味着什么。

我希望能够根据用户的域名缓存用户的权限,但听起来这可能已经发生了?

4

1 回答 1

2

如果您指的是以下陈述,我认为您对这一点的理解是错误的:

在 ASP.NET MVC 3 中,过滤器被更积极地缓存。因此,任何不正确地存储实例状态的自定义操作过滤器都可能被破坏。

这并不意味着过滤器的结果被缓存。这意味着过滤器本身将被缓存并被多个请求重用。它可与 CRM 插件相媲美。你不应该在其中跟踪状态,或者如果你这样做了,你必须小心不要进入并发的乐趣。

在您的情况下,我将使用例如MemoryCache将用户的角色/权限缓存在内存中一段时间​​。

于 2013-02-12T12:32:24.887 回答