2009-08-26 10 views
10

Ok Jestem raczej zdezorientowany, czy FormsAuthentication.SetAuthCookie() w asp.net utworzyć plik cookie na podstawie sesji, czy nie? Z czego wnoszę, aby umieścić coś w sesji byś zrobił coś takiego w kodzie za:Czy FormsAuthentication.SetAuthCookie() tworzy plik cookie na podstawie sesji?

Session["userAge"] = 25; 

Teraz, niezależnie od tego, czy plik cookie jest tworzony ten będzie działał jako jego stronie serwera, więc jestem zdezorientowany kiedy czytam, możesz mieć sesyjne i bezsesowe pliki cookie, jeśli tak, w jaki sposób utworzyć każdy i jak uzyskać dostęp do zmiennych esssion w pliku cookie w .net?

Odpowiedz

21

To powszechne zamieszanie. Sesja i formularze Uwierzytelnianie to dwie oddzielne koncepcje - mają niezależne limity czasu i niezależne pliki cookie (lub brak plików cookie, jeśli używasz sesji Cookieless).

Sesja na serwerze jest identyfikowana przez unikalny plik cookie, który jest tworzony nawet dla anonimowych użytkowników. Ten plik cookie zawiera identyfikator SessionID, który nie ma nic wspólnego z FormsAuthentication.

Plik cookie FormsAventhentication zawiera wiele rzeczy, z których najważniejszym jest bilet uwierzytelniający. Ten bilet jest zaszyfrowanym fragmentem informacji, który identyfikuje użytkownika na podstawie podanych danych logowania. Istnieje schemat blokowy krok po kroku i wyjaśnienie, co jest w zgłoszeniu in this MSDN article.

+0

To dużo wyjaśnia, ale część, której nie mogę przeczytać w tym artykule MSDN, brzmi: dlaczego ludzie mają na myśli, kiedy używają plików cookie sesji i plików cookie bez sesji? Sesja jest po stronie serwera, więc skąd się bierze na kliencie? –

+0

Możesz rzeczywiście uzyskać dostęp do właściwości SessionID, jeśli chcesz, która jest przechowywana w pliku cookie sesji (lub kwerendy, jeśli używasz sesji Cookieless). Mogą mówić o wprowadzonym przez nich zabezpieczeniu w celu powiązania innych plików cookie lub danych z danym identyfikatorem sesji. Możesz dowiedzieć się więcej o SessionID tutaj: http://msdn.microsoft.com/en-us/library/ms178581.aspx – womp

+0

dzięki! ma sens –

2

Nie jestem do końca pewien, o co pytasz, ale jeśli masz pytanie, jak uzyskać dostęp do Session["userAge"] bez pliku cookie auth, odpowiedź brzmi, ponieważ jest to oddzielna jednostka od sesji.

Plik cookie auth (nazwa domyślna .ASPXAUTH) jest tworzony przed rozpoczęciem sesji, więc nie może być oparty na sesji.

Powiązane problemy