获取当前用户ASP.NET成员身份的ID

时间:2012-10-31 13:27:52

标签: c# asp.net membership-provider

您是如何使用ASP.NET成员资格提供程序获取当前用户的ID的?我的应用程序是使用Database First方法的MVC 3,因此我创建了自己的数据库,成员资格提供程序和角色提供程序正在使用我的表(自定义成员资格和角色提供程序)。

在我的一个页面(反馈)中,用户可以发送有关我的网站的反馈,如果他已连接,我想在插入时在表格中包含UserID。

但是由于ASP.NET Membership是一个IIdentity,我唯一可以访问的是Name。我不想使用名称在2个表之间创建链接,我想要ID!

那么你在申请这项非常简单的任务时做了什么?我的意思是,在连接用户需要插入值的几乎每个页面中,我们都需要用户的ID来为用户表创建正确的外键,对吧?顺便说一句,我对这个MVC框架很新,在我使用ASP.NET aspx和用户信息之前,我使用了Session,它根据需要给了我当前的ID,Name和其他字段。由于使用Session对象的这个实现给了我共享托管的麻烦,我想使用真正的成员资格。

谢谢!

修改

我想要的ID必须是整数(实际上,我想要User表中的UserID字段)。

6 个答案:

答案 0 :(得分:30)

试试这个;

MembershipUser mu = Membership.GetUser("username");
string userId = mu.ProviderUserKey.ToString();

对于当前登录的用户,您可以在不传递用户名的情况下使用;

string userId = Membership.GetUser().ProviderUserKey.ToString();

答案 1 :(得分:4)

我想分享如何获取Identity 2.0的UserId:

string UserId = System.Web.HttpContext.Current.User.Identity.GetUserId();

答案 2 :(得分:0)

我遇到了类似的问题。我(由于其他原因,也)创建了一个基本的Controller类,我的所有其他控制器都继承自。您可以让基类随时保存用户的信息。

答案 3 :(得分:0)

假设您已在web.config中为您的提供者正确配置了所有内容,并且由于您可以获得用户名,我建议:

Dim muser As MembershipUser = Membership.GetUser(userName)

以下是MembershipUser对象的详细信息:http://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=EN-US&k=k%28SYSTEM.WEB.SECURITY.MEMBERSHIPUSER%29;k%28TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV4.0%22%29;k%28DevLang-VB%29&rd=true

除了名称以外的许多属性。您想要的ID号码被调用 'ProviderUserKey'

答案 4 :(得分:0)

这可能是你的追求吗?

userid from asp.net Membership Authentication?

就个人而言,我有自己的类,它封装了通过用户名检索这些细节以及我在我的应用程序中需要的任何自定义数据。

此致

答案 5 :(得分:0)

要获取当前的用户ID,您可以尝试以下

string currentUserId= Convert.ToString(Membership.GetUser().ProviderUserKey);
相关问题