2011-01-22 26 views
12

Quiero agregar un GUID de usuario con la información que obtengo de un usuario cuando envía una publicación. ¿Cómo puedo obtener el GUID?¿Cómo obtener el GUID del usuario actual?

Estoy utilizando el sistema de autenticación predeterminado que viene con una aplicación ASP.NET MVC.

Respuesta

29

Si está utilizando el proveedor de pertenencia ASP.NET:

MembershipUser user = Membership.GetUser(User.Identity.Name); 
Guid guid = (Guid)user.ProviderUserKey; 

o simplemente:

Guid guid = (Guid)Membership.GetUser().ProviderUserKey; 
+0

Batirme por un minuto. :) –

+2

Además, 'User.Identity.Name' no es necesario. Solo puede usar '(Guid) Membership.GetUser(). ProviderUserKey'. –

+0

@Maxim Zaslavsky: True dat, lo agregué a mi respuesta. ¡Gracias! –

1

Usted simplemente puede usar el nombre de usuario en lugar de golpear la base de datos para algo como esto:

[Authorize] 
public ActionResult PostComment() 
{ 
    var username = User.Identity.Name; 
    // Here you know the user trying to post a comment 
    ... 
} 
+0

Hmm mi plan era utilizar el GUID como clave externa. ¿Es mejor usar el nombre de usuario de un usuario? –

+0

El nombre de usuario debe ser único, por lo que funciona bien para FK. –

+0

Creo que esto podría ser un defecto en la biblioteca de membresía ya que los nombres de usuario son algo que el usuario eligió (por lo tanto, algo que querrían cambiar) y las búsquedas Guid deben optimizarse de alguna manera en SQL Server. –

1

Hola, hay un uso MVC del ejemplo de Membresía, con una explicación en este blog. Muestra cómo puede obtener la información de membresía del usuario conectado actualmente.

0

Esto es cómo conseguir que el usuario guid del nombre de usuario:

Guid userGuid = (Guid)Membership.GetUser(user.Username).ProviderUserKey; 
Cuestiones relacionadas