ASP.NET User.Identity.Name替代?

Wod*_*dzu 1 asp.net membership-provider membershipuser

我已经创建了自定义成员资格提供程序,操作MembershipUser.ProviderUserKey而不是UserName 对我来说更方便.所以,检索ProviderUserKey我执行这样的代码:

if (User.Identity.IsAuthenticated)
{
  int UserID = (int)Membership.GetUser(User.Identity.Name).ProviderUserKey;
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢.

Dar*_*rov 5

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