我正在开发一个门户系统来共享信息和文档等。每个用户都可以拥有多个配置文件。每个配置文件可以具有不同的角色和权限。现在一切正常,但我对MembershipProvider和MembershipUser有疑问。
我正在将自定义MembershipProvider和MembershipUser与OpenAccess ORM结合使用。
我非常依赖(CustomMembershipUser)Membership.GetUser()
。例如,我构建了一个用户菜单,他们可以看到他们登录的用户以及他们可以选择的配置文件。
要构建此菜单并收集当前配置文件的组,角色和权限,代码中的不同位置会对Membership.GetUser()
进行大量调用。我首先缓存了用户并基于ProviderUserKey返回了这个,但我被告知这是不安全的。所以我删除了缓存,但速度要快得多。对此有没有替代的最佳做法?
答案 0 :(得分:0)
对于您的情况没有100%的解决方案,您要么缓存结果,要么每次都计算结果。如果缓存会给您的应用带来风险,那么妥协就是非常小心地配置缓存策略。
Afaik,只有在您必须立即应用更改时,缓存才会在极少数情况下造成风险。请考虑使用一些高级缓存策略,例如cache dependency。
答案 1 :(得分:0)
会话是基于您的描述的适当解决方案。这很安全。 HttpContext.Items [“MembershipUser”]仅在一个http请求中保留用户信息,而会话保留信息直到会话到期。
缓存,但是每个应用程序而不是每个用户