2009-08-26 14 views
10

Tamam şaşkınım, asp.net'te FormsAuthentication.SetAuthCookie() bir oturum tabanlı çerez oluşturmuyor mu? Bir oturumda bir şey koymak için bir araya ne kodda böyle bir şey yapacağını Gönderen: bakılmaksızın bir çerez bu onun sunucu tarafı olarak çalışacak oluşturulan bakılmaksızın ŞimdiFormsAuthentication.SetAuthCookie() oturum tabanlı bir çerez oluşturuyor mu?

Session["userAge"] = 25; 

, bu yüzden olarak kafam karıştı okuduğum zaman oturumu ve oturumu olmayan kurabiyeler alabilir, eğer öyleyse her birini nasıl yaratıyorsunuz ve .net'deki tanımlama bilgisindeki özüm değişkenlerine nasıl erişiyorsunuz?

cevap

21

Bu yaygın bir kafa karışıklığıdır. Oturum ve FormsAuthentication iki ayrı kavramdır - bağımsız zaman aşımları ve bağımsız tanımlama bilgileri vardır (veya Cookieless oturumlarını kullanıyorsanız çerezler yoktur.)

Sunucuda oturum, anonim kullanıcılar için bile oluşturulan benzersiz bir tanımlama bilgisi ile tanımlanır. Bu çerez, FormsAuthentication ile ilgisi olmayan bir SessionID tutar.

FormsAuthentication tanımlama bilgisi, en önemlisi kimlik doğrulama bileti olan bir dizi şey içerir. Bu bilet, kullanıcıyı sağlanan giriş kimlik bilgilerine karşı tanımlayan şifreli bir bilgi bitidir. Büyük bir adım adım akış şeması ve in this MSDN article numaralı biletin içinde ne olduğu açıklanmaktadır.

+0

Bu çok şeyi açıklıyor, ancak bu MSDN makalesinden elde edemediğim bölüm, neden oturum tabanlı çerezler ve oturumda daha az çerez kullandıklarında insanlar demek oluyor? Oturum sunucu tarafıdır, bu yüzden istemcide nerede var? –

+0

SessionID özelliğine, isterseniz, Oturum çerezinde (veya Cookieless oturumlarını kullanıyorsanız, querystring) saklanan erişime erişebilirsiniz. Belirli bir SessionID'ye diğer çerezleri veya verileri bağlamak için uyguladıkları bir güvenlik önlemi hakkında konuşuyor olabilirler. SessionID hakkında daha fazla bilgiye buradan ulaşabilirsiniz: http://msdn.microsoft.com/en-us/library/ms178581.aspx – womp

+0

Teşekkürler! mantıklı –

2

Tam olarak ne sorduğundan emin değilim, ancak sorunuzu yanıtlama bilgisi olmadan Session["userAge"]'a nasıl erişebilirseniz, yanıt, oturumdan ayrı bir varlık olduğu içindir.

Oturumun başlatılmasından önce, auth çerezi (varsayılan adı) oluşturulur, böylece oturum temel alınmaz.

İlgili konular