asp.net - una - pasar datos entre controladores mvc
Obtenga UserId(int) en la nueva aplicaciĆ³n MVC4 (4)
La nueva aplicación MVC4 creó la tabla UserProfile:
UserId (int) | Nombre de usuario (nvarchar)
En el controlador:
string currentUser = User.Identity.Name; // returns UserName
var mu1 = Membership.GetUser(); // returns null
var mu2 = Membership.GetUser(currentUser); // returns null as well
Leo muchos hilos y todos hablan sobre cómo obtener Guid, que ni siquiera tengo en las tablas de usuarios y membresías.
¿Hay alguna manera de obtener UserId (int) del Usuario actualmente conectado?
Puede obtener UserId como int con
WebSecurity.GetUserId(User.Identity.Name);
Información adicional: debe agregar [InitializeSimpleMembership]
en la parte superior de la clase del controlador si usa otro controlador que AccountController.
mu1
y mu2
contendrán una instancia de MembershipUser
si el usuario se ha autenticado correctamente. MembershipUser
tiene una propiedad ProviderUserKey
de tipo object
que contendrá el identificador para un usuario.
Membership.GetUser()
requiere que MembershipProvider se conecte para la aplicación y para que el usuario sea autenticado; ya que está viendo un retorno null
, esto sugeriría que una de las condiciones antes mencionadas no se cumple.
Asegúrese de agregar [InitializeSimpleMembership]
a la parte superior de su controlador para que inicialice la membresía simple a través del archivo InitializeSimpleMembershipAttribute.cs
en el directorio de Filters
.
Luego puede acceder a la identificación de usuario de varias maneras diferentes:
int mu1 = (int)WebSecurity.CurrentUserId;
int mu2 = (int)Membership.GetUser().ProviderUserKey;
Puedes obtener UserId
if (Request.IsAuthenticated)
{
var membership = (SimpleMembershipProvider)Membership.Provider;
int idUser = membership.GetUserId(User.Identity.Name);
}