在新的MVC4应用程序中获取UserId(int)

时间:2013-03-02 22:59:38

标签: asp.net asp.net-mvc-4 membership

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

UserId(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,我甚至没有用户和会员表。

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

4 个答案:

答案 0 :(得分:12)

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

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

int mu1 = (int)WebSecurity.CurrentUserId;
int mu2 = (int)Membership.GetUser().ProviderUserKey;

答案 1 :(得分:3)

您可以使用

将UserId作为int
WebSecurity.GetUserId(User.Identity.Name);

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

答案 2 :(得分:0)

如果用户已成功通过身份验证,则

mu1mu2将包含MembershipUser的实例。 MembershipUser具有类型为ProviderUserKey的{​​{1}}属性,其中包含用户的标识符。

object要求为应用程序连接MembershipProvider并对用户进行身份验证;因为您看到Membership.GetUser()返回,这表明上述条件之一未得到满足。

答案 3 :(得分:0)

您可以获得UserId

if (Request.IsAuthenticated)
 {
  var membership = (SimpleMembershipProvider)Membership.Provider; 
  int idUser = membership.GetUserId(User.Identity.Name);
 }