使用会员用户ID能否检索用户配置文件?

5
使用Asp.net成员资格和配置文件提供程序:
我能否使用成员 UserID 而不是用户名来检索用户配置文件?
我问这个问题的原因是,如果我有UserID而不是用户名,我将不得不编写以下两行代码。
    Dim MembershipUser As MembershipUser = Membership.GetUser("UserID")
    Dim Profile As Profile = Profile.GetProfile(MembershipUser.UserName)

改为:

Dim profile As Profile = HttpContext.Current.Profile

会影响性能吗?我的设计有问题吗?我有遗漏什么吗?请注意:我知道可以使用以下代码检索当前登录的用户:HttpContext.Current.User.Identity.Name

1个回答

3
Guid userId = Membership.GetUser().ProviderUserKey as Guid; 

这将为您提供所需的UserId。为了简化asp.net应用程序,当用户登录时,我通常将其放入会话中。

asp.net成员资格表每个应用程序都有唯一的用户名,由于可以在一个数据库中定义多个应用程序,因此调用Profile.GetProfile(string userName)也可以从不同的应用程序返回配置文件。这就是为什么没有GetProfile(userName)并且自己实现它是一个坏主意。


我正在构建一个ASP.Net Web应用程序而不是网站,因此我使用了WebProfileBuilder 1.3。(因为我真的看不到其他方法?)...我可以成功地使用:WebProfile.GetProfile(UserName),但没有传递ID的方法。我必须自定义它吗? - Haris
如果您在Visual Studio中创建一个新网站,然后添加一些属性,例如<properties><add name="PostalCode" /></properties>。您可以使用以下代码检索任何用户的邮政编码值:Profile.GetProfile("用户名").PostalCode。那么,为什么您会说“这就是为什么没有GetProfile(userName)并且自己实现它是一个坏主意”的呢? - Haris
从你的问题中并不清楚你实际想要的是什么...浏览了一下我的asp.net应用程序和原始的asp.net成员身份验证,我提出了这些问题:"这会影响性能吗?我的设计有问题吗?我有什么遗漏吗?" - b0rg
2
我想要做的是使用MembershipUserID而不是用户名来检索用户(非登录用户)的个人资料。 - Haris

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接