14

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

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

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

那么,对于这个非常简单的任务,您在应用程序中做了什么?我的意思是,在连接用户需要插入值的几乎每个页面中,我们都需要用户的 ID 来为用户表创建正确的外键,对吧?顺便说一句,我对这个 MVC 框架非常陌生,在此之前我使用的是 ASP.NET aspx,对于用户信息,我使用的是会话,它根据需要为我提供了当前 ID、名称和其他字段。由于这种使用 Session 对象的实现在共享主机方面给我带来了麻烦,我想使用真正的成员资格。

谢谢!

编辑

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

4

6 回答 6

31

试试这个;

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

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

string userId = Membership.GetUser().ProviderUserKey.ToString();
于 2012-10-31T13:33:17.647 回答
4

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

string UserId = System.Web.HttpContext.Current.User.Identity.GetUserId();
于 2014-12-22T21:45:22.183 回答
0

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

于 2012-10-31T13:33:06.763 回答
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”

于 2012-10-31T13:33:44.610 回答
0

这会是你的追求吗?

来自asp.net会员身份验证的用户ID?

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

问候

于 2012-10-31T13:40:32.253 回答
0

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

string currentUserId= Convert.ToString(Membership.GetUser().ProviderUserKey);
于 2014-04-09T14:07:33.830 回答