1

MembershipUser.ProviderUserKey我已经创建了自定义会员提供程序,它比用户名更方便我操作。因此,要检索ProviderUserKey我执行这样的代码:

if (User.Identity.IsAuthenticated)
{
  int UserID = (int)Membership.GetUser(User.Identity.Name).ProviderUserKey;
}

但是,GetUser()执行方法时,必须从数据库中检索用户数据,这让我很烦恼。这是对服务器时间的不必要浪费,无论这个时间多短,我都想避免它。

有没有其他ProviderUserKey更方便的方式,比如User.Identity.Name以防万一?

我想听听你的想法。你如何在你的网页上解决这个问题?

谢谢。

4

2 回答 2

5

Membership API 正在访问数据库,因为它是存储此信息的唯一位置。User.Identity.Name正在从每次请求时发送的 cookie 中获取记录的用户名。您可以实现自定义通用主体并将必要的信息存储到userData身份验证票证的部分中,该部分在 cookie 中加密。这是一篇涵盖此主题的文章。

于 2010-11-18T11:05:00.477 回答
3

当他们第一次登录时从数据库中读取ProviderUserKey并将其存储在用户的会话集合中?在随后的请求中,您可以从会话中获取它而无需进入数据库。

于 2010-11-18T11:36:04.120 回答