2010-04-14 15 views
6

Ad esempio: se sto recuperando User.Identity.Name, proviene dal cookie .ASPXAUTH o viene recuperato dal database utilizzando il mio provider di appartenenza?Da dove provengono i dati User.Identity?

Sono richieste di database eseguite quando accedo a User.Identity?

Grazie.


EDIT: In questo momento sto abbastanza sicuro che proviene da un cookie ticket di autenticazione, ma non riesce a trovare alcuna documentazione ufficiale per confermare questo. Chiunque?

risposta

1

Questo dovrebbe rispondere alla tua domanda ...

"Il ticket di autenticazione moduli non solo include l'identità dell'utente, ma contiene anche informazioni per aiutare a garantire l'integrità e la sicurezza dei il token. " Tratto dal seguente articolo di Microsoft:

http://www.asp.net/security/tutorials/forms-authentication-configuration-and-advanced-topics-vb

In aggiunta a questa spiegazione, osservando il comportamento ASP.NET supporta anche la conclusione che il nome utente è, infatti, memorizzate nel cookie ASPXAUTH: ASP.NET non colpire il database nelle richieste di pagine successive dopo che l'utente è stato autenticato. Puoi provarlo tu stesso, come ho fatto io, eseguendo SQL Profiler per monitorare il database come viene utilizzato da un'applicazione ASP.NET.

Inoltre, sapere che il nome utente e i dati del ticket di autenticazione NON sono memorizzati nello stato di sessione. Oltre a sollevare problemi di sicurezza, questo tipo di implementazione causerebbe l'interruzione dell'appartenenza a ASP.NET quando lo stato della sessione è disabilitato. Ecco un'altra risposta Stack Overflow che indica che i dati Forms Authentication (Membership) e Stato di sessione non hanno nulla a che fare uno con l'altro:

Does FormsAuthentication.SetAuthCookie() make a session based cookie?

quella risposta anche collegato a un articolo di MSDN, here, che spiega il cookie ASPXAUTH in dettaglio, anche se l'articolo che ho citato sopra sembra essere più attuale.

0

.ASPXAUTH cookie/User.Identity deriva dall'autenticazione (Windows, Forms).

Se si sta cercando di ottenere l'utente di adesione è necessario utilizzare

Membership.GetUser() 

o

Membership.GetUser(User.Identity.Name) 

documentation here che si tradurrebbe in una chiamata DB.

+0

Capisco che provenga dall'autenticazione. Tuttavia, quando chiamo User.Identity.Name - da dove viene recuperato il valore? Cookie o db o sessione? – niaher

+0

I cookie esistono solo dopo l'autenticazione ... quindi ... tutto dipende dallo schema di autenticazione – Nix

1

Credo che le informazioni di autenticazione siano specifiche per una sessione e mantenute all'interno del processo ASP.net o all'esterno o persino del server SQL. Una volta che un utente viene autenticato, viene generato un token di sessione, il token viene utilizzato per tenere traccia delle informazioni dell'utente autenticato nel servizio di stato. Nelle richieste successive, il token di sessione viene utilizzato per recuperare l'identità dell'utente e questo è il punto in cui vengono visualizzati oggetti prepopolati come User.Identity.Name. questo deve essere inserito nel modulo Autenticazione moduli o nel modulo di autenticazione di Windows in base al tipo di autenticazione che si sta utilizzando. Se si imposta la modalità di autenticazione senza cookie, il token di sessione viene visualizzato all'interno dell'URL. Alla scadenza della sessione, tutte le informazioni relative alla sessione vengono rimosse dal servizio di stato.

Spero che questo sia chiaro!

+0

Anche se è una risposta accettata, in realtà non risponde alla mia domanda. – niaher

+0

Allora perché l'hai accettato? – IsmailS

+0

Sono stato costretto a poiché la domanda era sulla taglia. – niaher

1

Dipende dal tipo di sessione che si sta utilizzando. Le sessioni possono essere variate usando due parametri 1. Uso di cookie-Cookieless, o utilizzare cookie 2. Processo per memorizzare le informazioni sullo stato della sessione: Inproc (in elaborazione), outproc (servizio stato ASP.net) o Sql Server.

Se si utilizza Sql Server per memorizzare le informazioni sullo stato, verrà creata una query di base dati per recuperare i dati della sessione. Maggiori dettagli qui-

http://www.codeproject.com/KB/aspnet/ExploringSession.aspx

Problemi correlati