Jon*_*ood 5 asp.net asp.net-membership
使用ASP.NET成员资格,如果我想获取当前用户的信息,我可以打电话 MembershipUser.GetUser()
因此,系统必须知道当前用户的ID.
如果这是正确的,并且我想要的只是当前用户的ID,是否有办法在不从数据库返回所有用户信息的情况下获取它?
我知道我可以使用当前用户的用户名User.Identity.Name,但我需要ID.
小智 10
简短的回答是,当您使用内置成员资格提供程序时,您不能仅获取用户ID而不检索整个用户信息
MembershipUser user = Membership.GetUser();
string UserID = user.ProviderUserKey.ToString();
Run Code Online (Sandbox Code Playgroud)
但是如果你想拥有只检索userID的方法或属性,你必须重新实现自己的成员资格提供者或(简单地说)实现IPrincipal接口
进一步研究后发现,ASP.NET Membership API 似乎并没有跟踪用户 ID。它必须仅跟踪用户名 ( User.Identity.Name)。ID 不是必需的,因为可以通过 ID或Membership.GetUser()用户名查找用户。
事实上,Membership.GetUser()必须简单地翻译为Membership.GetUser(User.Identity.Name). 由于它可以从用户名获取当前用户,因此不再有任何理由假设当前用户 ID 缓存在任何地方。
因此,ID 似乎没有加载到内存中,获取 ID 的唯一方法是从数据库加载数据(这意味着在使用 ASP.NET Membership API 时加载整个用户记录)。
| 归档时间: |
|
| 查看次数: |
8550 次 |
| 最近记录: |