2011-01-22 14 views
12

Desidero aggiungere un GUID dell'utente con le informazioni che recupero da un utente quando inviano un post. Come posso ottenere il GUID?Ottenere il GUID dell'utente corrente?

Sto utilizzando il sistema di autenticazione predefinito fornito con un'applicazione ASP.NET MVC.

risposta

29

Se si utilizza il provider di appartenenze ASP.NET:

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

o semplicemente:

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

Batti un minuto. :) –

+2

Inoltre, 'User.Identity.Name' non è necessario. Puoi semplicemente usare '(Guid) Membership.GetUser(). ProviderUserKey'. –

+0

@Maxim Zaslavsky: True dat, l'ho aggiunto alla mia risposta. Grazie! –

1

Si potrebbe semplicemente usare il nome utente invece di colpire il database per qualcosa di simile:

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

Hmm mio piano era di usare il GUID come chiave esterna. È meglio usare il nome utente di un utente? –

+0

Il nome utente deve essere univoco, quindi funziona perfettamente con gli FK. –

+0

Penso che questo potrebbe essere un difetto nella libreria di appartenenza poiché i nomi utente sono qualcosa che l'utente ha scelto (quindi qualcosa che vorrebbero cambiare) e le ricerche Guid devono essere in qualche modo ottimizzate in SQL Server. –

1

Ciao c'è un uso MVC dell'esempio di appartenenza, con spiegazione in questo blog. Mostra come è possibile ottenere le informazioni sull'iscrizione dell'utente attualmente connesso.

0

Questo è come ottenere l'utente guid dal nome utente:

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