2010-05-07 21 views
7

sto provando a mostrare un elenco di utenti della mia applicazione "school", quando l'amministratore esegue il login quindi può visualizzare tutti gli utenti in elenco ma quando i principianti della scuola si collegano, dovrebbe ottenere solo gli utenti della sua scuola, quindi ho pensato di ottenere l'ID utente loggato prima e poi da quell'utente, otterrò schoolId dato che userId è una chiave straniera nel tavolo della scuola ... una volta che avrò la scuola, posso mostrare i membri di quella scuola.get corrente loggato in userid in aspnet mvc membership

Ma il mio problema è come ottenere l'ID utente attualmente connesso. Sto usando MVC 1.0 Asp.Net - "Abbonamento"

se la mia logica di cui sopra è sbagliato, allora la prego di dirmi la buona idea si alternano, in modo che principal può vedere solo la lista degli utenti ..

risposta

3

Il Simple Solution Con lo scenario che descrivete, sarete in grado di farlo solo recuperando le informazioni dell'utente con i dati memorizzati in HttpContext.Current.Identity. Ad esempio, se HttpContext.Current.Identity.Name è il nome utente, utilizzare tale valore per recuperare i dati utente per il principal che dovrebbero includere l'ID utente che è possibile utilizzare per individuare la scuola appropriata.

Alternate Solution Si potrebbe considerare l'archiviazione di SchoolId nel profilo dell'utente in modo che sia più facilmente accessibile.

+0

ok, thx sono così alle prime armi, ma ora ho ancora un dubbio, come posso recuperare i dati dell'utente usando "HttpContext.Current.Identity.Name". se avessi usato il mio controller di appartenenza, avrei interrogato ma sto usando l'appartenenza ad aspnet, quindi come fare? – FosterZ

21

Sulla base di questo question e risposta da J. Pablo Fernández è possibile ottenere l'id utente dell'utente corrente con il seguente codice:

//It will only be a Guid if you are using SQL Server as the DB as oppose to MySQL 
Guid userGuid = (Guid)Membership.GetUser().ProviderUserKey; 

Ecco il MSDN Documentation.

3

Il modo più semplice che ho provato

Bisogna includere Microsoft.AspNet.Identity

using Microsoft.AspNet.Identity; 

Quindi utilizzare in questo modo

var userId = User.Identity.GetUserId().ToString();