我多次调用 Membership.GetUser() 并且似乎找不到任何内置的东西来解决这个问题(没有多次访问数据库)。

在意识到这不合适之前,我首先研究了静态变量。我知道我可以使用 session ,但我需要对用户 ID 进行散列/加密以使其安全,这很好,但我不想在不检查 .net 成员身份中是否有内置方法来执行此操作的情况下执行此操作提供者

是否有一种内置的方式来记住像 UserID 这样的值并为当前用户安全地存储它?

最佳答案

Membership.GetUser() 是对类 MembershipProvider 方法的间接调用:

public abstract MembershipUser GetUser(string username, bool userIsOnline);

因此,您可以编写一个派生自您正在使用的 MembershipProvider 的类(例如 SqlMembershipProvider 或 ActiveDirectoryMembershipProvider,或自定义的)并使用一些巧妙的缓存机制覆盖此方法。

然后您需要更改 web.config 以声明这个新的 MembershipProvider 类:
<membership defaultProvider="MyProvider">
    <providers>
        <clear/>
        <add name="MyProvider" type="...MyProvider" ... />
    </providers>
</membership>

关于c# - 如何有效地管理对 Membership.GetUser() 的多次调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4492561/

10-13 09:32