Sessioni Cookieless in ASP.NET
-
28-10-2019 - |
Domanda
Recentemente stavo scavando sulle sessioni di Cookieless, sono arrivato a un articolo che dice che ogni volta che viene creata la sessione sul server, il suo ID è archiviato nei cookie, sulla macchina client, mi pensavo nel mio college che le sessioni sono archiviate su Il server, e se sessionid è nei cookie e i cookie sono archiviati nella macchina client a livello locale, come si può dire che la sessione è memorizzata sul server, è giusto, che le sessioni sono archiviate sul server? Se sì, qual è il concetto di sessione Cookieless, qualcuno può spiegarmi
Soluzione
Lo stato di sessione è (quasi sempre) memorizzato sul server ed è identificato da un numero casuale, il token di sessione.
Quel token deve essere archiviato dal client e inviato al server insieme alle sue richieste HTTP (in modo che il server possa ricordare di averlo visto prima e associare la sessione alla richiesta).
Come si può dire che la sessione è archiviata sul server, è giusto, che le sessioni sono archiviate sul server?
Solo il token di sessione viene archiviato sul client e poiché si tratta di un numero casuale, non contiene alcuna informazione utile in sé. Diventa prezioso solo insieme ai dati memorizzati sul server.
Se sì, qual è il concetto di sessione Cookieless
Il modo più semplice per conservare il token è usare i cookie. Questo è ciò per cui i biscotti sono stati inventati. Le alternative stanno consegnando il cookie avanti e indietro usando variabili di forma nascosta o come parte dell'URL.
Altri suggerimenti
La sessione è memorizzata sul server. Ogni sessione associata all'ID (il provider di stato di sessione più semplice in ASP.NET è solo un dizionario in memoria con ID come chiavi). Questo ID è archiviato anche nel cookie del cliente, ma in caso di sessioni Cookieless, l'ID è archiviato nell'URL (esempio).
Pensa all'ID di sessione come a una chiave in una tabella e allo stato di sessione come valore. Solo la chiave viene inviata ai clienti, non al valore.
Nel caso di ASP.NET, lo stato di sessione stesso è un dizionario che contiene coppie chiave / valore.
Se stai utilizzando il provider di sessione SQL Server standard, la tabella che ho menzionato sopra si chiama ASPStateTempSessions
. SessionId
è il PK e il serializzato Dictionary
è conservato in entrambi i SessionItemShort
o SessionItemLong
colonna.