6

新的 MVC4 应用程序创建了 UserProfile 表:

用户 ID(int) | 用户名(nvarchar)

在控制器中:

  string currentUser = User.Identity.Name;  // returns UserName

  var mu1 = Membership.GetUser(); // returns null

  var mu2 = Membership.GetUser(currentUser); // returns null as well

我读了很多帖子,他们都在谈论获得 Guid,我什至在用户和会员表中都没有。

有没有办法获取当前登录 User 的 UserId (int)?

4

4 回答 4

12

确保添加[InitializeSimpleMembership]到控制器的顶部,以便它通过目录InitializeSimpleMembershipAttribute.cs中的文件初始化简单成员资格Filters

然后您可以通过几种不同的方式访问用户 ID:

int mu1 = (int)WebSecurity.CurrentUserId;
int mu2 = (int)Membership.GetUser().ProviderUserKey;
于 2013-03-13T10:28:14.017 回答
3

您可以使用 int 获取 UserId

WebSecurity.GetUserId(User.Identity.Name);

附加信息:[InitializeSimpleMembership]如果您使用 AccountController 以外的其他控制器,则应在控制器类之上添加。

于 2013-03-02T23:10:15.087 回答
0

mu1并将mu2包含MembershipUser用户是否已成功通过身份验证的实例。MembershipUser有一个包含用户标识符ProviderUserKey的类型属性。object

Membership.GetUser()需要为应用程序和用户进行身份验证连接 MembershipProvider;由于您看到null返回,这表明不满足上述条件之一。

于 2013-03-02T23:07:54.073 回答
0

你可以得到用户ID

if (Request.IsAuthenticated)
 {
  var membership = (SimpleMembershipProvider)Membership.Provider; 
  int idUser = membership.GetUserId(User.Identity.Name);
 }
于 2014-11-02T10:26:00.400 回答