2009-08-26 19 views
10

Ok, sono piuttosto confuso, FormsAuthentication.SetAuthCookie() in asp.net crea un cookie basato sulla sessione o no? Da quanto ho capito di mettere qualcosa in una sessione si farebbe qualcosa di simile nel codice dietro:Does FormsAuthentication.SetAuthCookie() crea un cookie basato sulla sessione?

Session["userAge"] = 25; 

Ora indipendentemente dal fatto che un cookie viene creato questo funzionerà come il suo lato server, quindi sono confuso come a quando leggo puoi avere i cookie di sessione e senza sessione, in tal caso come li crei e come accederai alle variabili di esssion nel cookie in .net?

risposta

21

Questa è una confusione comune. Session and FormsAuthentication sono due concetti separati: hanno timeout indipendenti e cookie indipendenti (o no cookie se si utilizzano sessioni Cookieless)

La sessione sul server è identificata da un cookie univoco creato anche per utenti anonimi. Questo cookie contiene un SessionID che non ha nulla a che fare con FormsAuthentication.

Il cookie FormsAuthentication contiene un numero di elementi, il più importante dei quali è il ticket di autenticazione. Questo ticket è un bit crittografato di informazioni che identifica l'utente rispetto alle credenziali di accesso fornite. C'è un ottimo diagramma di flusso passo-passo e la spiegazione di cosa c'è in un ticket in this MSDN article.

+0

Questo spiega molto, ma la parte che non ottengo da quell'articolo MSDN lo è, perché le persone intendono quando utilizzano cookie basati su sessione e cookie senza sessione? La sessione è lato server, quindi dove arriva sul client? –

+0

È possibile accedere effettivamente alla proprietà SessionID se si desidera, che è memorizzata nel cookie Session (o querystring, se si stanno utilizzando le sessioni Cookieless). Potrebbero parlare di una misura di sicurezza che hanno implementato per legare altri cookie o dati a un dato SessionID. Puoi controllare di più su SessionID qui: http://msdn.microsoft.com/en-us/library/ms178581.aspx – womp

+0

grazie! ha senso –

2

Non sono sicuro di quello che stai chiedendo, ma se la tua domanda è come puoi accedere a Session["userAge"] senza un cookie di autenticazione, la risposta è perché è un'entità separata dalla sessione.

Il cookie auth (nome predefinito .ASPXAUTH) viene creato prima dell'inizio della sessione, in modo che non possa essere basato sulla sessione.

Problemi correlati