0

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

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

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

要构建此菜单并收集当前配置文件的组、角色和权限,代码中有很多Membership.GetUser()来自不同位置的调用。我首先缓存了用户并根据 ProviderUserKey 返回了这个,但我被告知这是不安全的。所以我删除了缓存,但速度要快得多。是否有替代的最佳实践?

4

2 回答 2

0

对于您的情况,没有 100% 的解决方案,要么你缓存了你的结果,要么你每次都计算它。妥协是非常小心地配置缓存策略,如果缓存会导致您的应用程序风险。

Afaik,只有在您必须立即应用更改的情况下,缓存才会在极少数情况下导致风险。考虑使用一些高级缓存策略,例如缓存依赖

于 2012-11-21T10:15:45.823 回答
0

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

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

于 2012-11-21T10:58:17.797 回答