asp.net自定义成员资格提供程序多次调用GetUser()会使应用程序变慢

时间:2012-11-21 10:02:52

标签: c# asp.net asp.net-membership telerik-open-access

我正在开发一个门户系统来共享信息和文档等。每个用户都可以拥有多个配置文件。每个配置文件可以具有不同的角色和权限。现在一切正常,但我对MembershipProvider和MembershipUser有疑问。

我正在将自定义MembershipProvider和MembershipUser与OpenAccess ORM结合使用。

我非常依赖(CustomMembershipUser)Membership.GetUser()。例如,我构建了一个用户菜单,他们可以看到他们登录的用户以及他们可以选择的配置文件。

要构建此菜单并收集当前配置文件的组,角色和权限,代码中的不同位置会对Membership.GetUser()进行大量调用。我首先缓存了用户并基于ProviderUserKey返回了这个,但我被告知这是不安全的。所以我删除了缓存,但速度要快得多。对此有没有替代的最佳做法?

2 个答案:

答案 0 :(得分:0)

对于您的情况没有100%的解决方案,您要么缓存结果,要么每次都计算结果。如果缓存会给您的应用带来风险,那么妥协就是非常小心地配置缓存策略。

Afaik,只有在您必须立即应用更改时,缓存才会在极少数情况下造成风险。请考虑使用一些高级缓存策略,例如cache dependency

答案 1 :(得分:0)

会话是基于您的描述的适当解决方案。这很安全。 HttpContext.Items [“MembershipUser”]仅在一个http请求中保留用户信息,而会话保留信息直到会话到期。

缓存,但是每个应用程序而不是每个用户

相关问题