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

你们如何设法使用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字段)。

试试这个;

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

对于当前登录的用户,您可以使用而不传递用户名;

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

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

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

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

假设您在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 =真

除了名称以外的许多属性。 您想要的ID字段称为“ProviderUserKey”

这可能是你的追求吗?

来自asp.net会员身份validation的userid?

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

问候

要获取当前的UserID,您可以尝试以下操作

 string currentUserId= Convert.ToString(Membership.GetUser().ProviderUserKey);