新的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)?
答案 0 :(得分:12)
确保将[InitializeSimpleMembership]
添加到控制器的顶部,以便通过InitializeSimpleMembershipAttribute.cs
目录中的文件Filters
初始化简单成员资格。
然后您可以通过几种不同的方式访问用户ID:
int mu1 = (int)WebSecurity.CurrentUserId;
int mu2 = (int)Membership.GetUser().ProviderUserKey;
答案 1 :(得分:3)
您可以使用
将UserId作为intWebSecurity.GetUserId(User.Identity.Name);
附加信息:如果您使用的是除AccountController之外的其他控制器,则应在控制器类之上添加[InitializeSimpleMembership]
。
答案 2 :(得分:0)
mu1
和mu2
将包含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);
}