Reputation: 8525
New MVC4 application created UserProfile table :
UserId(int) | UserName(nvarchar)
In controller :
string currentUser = User.Identity.Name; // returns UserName
var mu1 = Membership.GetUser(); // returns null
var mu2 = Membership.GetUser(currentUser); // returns null as well
I read a lot of threads and they all talk about getting Guid, which I don't even have in user and membership tables.
Is there a way to get the UserId (int) of currently logged in User ?
Upvotes: 6
Views: 14042
Reputation: 1
You can get UserId
if (Request.IsAuthenticated)
{
var membership = (SimpleMembershipProvider)Membership.Provider;
int idUser = membership.GetUserId(User.Identity.Name);
}
Upvotes: 0
Reputation: 4458
Make sure you add [InitializeSimpleMembership]
to the top of your controller so that it initializes the simple membership via the file InitializeSimpleMembershipAttribute.cs
in the Filters
directory.
Then you can access the user id in several different ways:
int mu1 = (int)WebSecurity.CurrentUserId;
int mu2 = (int)Membership.GetUser().ProviderUserKey;
Upvotes: 12
Reputation: 1139
You can get UserId as int with
WebSecurity.GetUserId(User.Identity.Name);
Additional Information: You should add [InitializeSimpleMembership]
on top of controller class if you use another controller than AccountController.
Upvotes: 3
Reputation: 125528
mu1
and mu2
will contain an instance of MembershipUser
if the user has successfully authenticated. MembershipUser
has a ProviderUserKey
property of type object
that will contain the identifier for a user.
Membership.GetUser()
requires a MembershipProvider to be hooked up for the application and for the user to be authenticated; since you are seeing null
returned, this would suggest that one of the aforementioned conditions is not met.
Upvotes: 0