gpt4 book ai didi

c# - 如何有效地管理对 Membership.GetUser() 的多次调用

转载 作者:行者123 更新时间:2023-11-30 13:51:27 25 4
gpt4 key购买 nike

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

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

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

最佳答案

我建议使用 Singleton-per-Request pattern它使用 HttpContext.Items属性(property)。

public class UserPerRequest
{
/// <summary>
/// Returns the result of Membership.GetUser(), but will cache the results within the
/// current request so it's only called once per request.
/// </summary>
public static MembershipUser Current
{
get
{
const string key = "UserPerRequest";

if (HttpContext.Current.Items[key] == null)
HttpContext.Current.Items[key] = Membership.GetUser();

return (MembershipUser)HttpContext.Current.Items[key];
}
}
}

因此,无论您在何处调用 Membership.GetUser(),只需调用 UserPerRequest.Current 即可。如果 Membership.GetUser() 返回 null,您仍然会在请求期间多次调用数据库的唯一情况。

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com