Form kimlik doğrulaması zaman aşımı ile sessionState zaman aşımı karşılaştırması


139

Ben web sitesinin oturum zaman çıkışları ile ilgili üzerinden bakıyorum kodu var. Web.config dosyasında bu kodla karşılaştım.

 <authentication mode="Forms">
  <forms loginUrl="~/Auth/SignOn.aspx" timeout="40" slidingExpiration="true" />
</authentication>

<sessionState timeout="30" />

Herkes birinin diğerine emsal alıp almadığını ve nasıl farklı olduklarını biliyor mu? Teşekkürler.


Yanıtlar:


226

Bunlar farklı şeyler. Form Kimlik Doğrulaması Zaman Aşımı değeri, kimlik doğrulama çerezinin geçerli olarak ayarlanacağı süreyi dakika cinsinden ayarlar, yani valuedakikalar sonra çerezin süresi dolacak ve kullanıcının kimliği doğrulanmayacaktır - giriş bilgilerine yönlendirilecektir otomatik olarak sayfa. slidingExpiration=trueDeğeri temelde sürece kullanıcı zaman aşımı değer içinde istekte olarak, onlar (daha fazla ayrıntı kimlik doğrulaması devam edeceğini söylediğini burada ). slidingExpiration=falseKimlik doğrulama çerezini ayarlarsanız , valuekullanıcının zaman aşımı değeri içinde istekte bulunup bulunmadığına bakılmaksızın, dakikalar sonra süresi dolar .

Zaman SessionStateaşımı değeri, bir Oturum Durumu sağlayıcısının belirli bir oturum için verileri (veya kullanılan herhangi bir destek deposu, SQL Server, OutOfProc, vb.) Bellekte tutması gereken süreyi ayarlar. Örneğin, örneğinizdeki değeri kullanarak Oturum'a bir nesne koyarsanız, bu veriler 30 dakika sonra kaldırılır. Kullanıcının kimliği hala doğrulanmış olabilir, ancak Oturumdaki veriler artık mevcut olmayabilir. Session TimeoutDeğeri her zaman her istekten sonra sıfırlanır.


26
Bir açıklama: Form kimlik doğrulama zaman aşımı , Biletin saklanabileceği çerez için mutlaka Bilet için sona erme süresini ayarlar . Çerezin hiç sona erme süresi olmayabilir (kafa karıştırıcı olarak bir oturum çerezi olarak adlandırılır, bu da kullanıcı tarayıcıyı kapatana kadar sürer) veya bir çerez bile olmayabilir ("çerezsiz" form kimlik doğrulaması). Kalıcı bir çerez durumunda, form kimlik doğrulaması, çerezin sona erme tarihini ve biletin sona erme tarihini aynı anda ayarlar.
bmode

13
MSDN'den başka bir açıklama: "Performanstan ödün verilmesini önlemek ve çerez uyarıları açık olan kullanıcılar için birden fazla tarayıcı uyarısını önlemek için, belirtilen sürenin yarısından fazlası geçtiğinde çerez güncellenir." Bu yüzden çerez zaman aşımı yalnızca yarısı dolduğunda sıfırlanır. Bu nedenle, oturum zaman aşımının 2 katı olarak ayarlanması önerisi.
user917170

21

SlidingExpiration = true değeri temelde her istek yapıldıktan sonra zamanlayıcının sıfırlandığını ve kullanıcı zaman aşımı değeri içinde bir istekte bulunduğu sürece kimlik doğrulamaya devam edeceğini söylüyor.

Bu doğru değil. Kimlik doğrulama çerezi zaman aşımı yalnızca zaman aşımı süresinin yarısı dolduğunda sıfırlanır.

Örneğin bkz. Https://support.microsoft.com/de-ch/kb/910439/en-us veya https://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session -zaman aşımı/


18

Anladığım kadarıyla birbirlerinden bağımsızlar. Oturum zaman aşımını kimlik doğrulama zaman aşımından daha az veya ona eşit tutarak, kimlik doğrulaması zaman aşımına uğradıktan sonra kullanıcıya özgü oturum değişkenlerinin devam etmediğinden emin olabilirsiniz (endişeniz varsa, bunu sorarken normal olduğunu düşünüyorum soru). Elbette, oturumu kapattıktan sonra oturum değişkenlerini elden çıkarmanız gerekir.

Sorunuza cevap verebilecek veya en azından sizi doğru yönde gösterebilecek iyi bir yanıt:


7

Aradaki fark, bir kişinin (Form zaman aşımı) kullanıcının kimliğini doğrulamasıyla, diğerinin (Oturum zaman aşımı) önbelleğe alınan verilerin sunucuda ne kadar süre saklandığı ile ilgili olmasıdır. Bu yüzden çok bağımsız şeyler, bu yüzden biri diğerinden öncelikli değil.


5
      <sessionState timeout="2" />
      <authentication mode="Forms">
          <forms name="userLogin" path="/" timeout="60" loginUrl="Login.aspx" slidingExpiration="true"/>
      </authentication>

Bu yapılandırma beni her iki dakikada bir giriş sayfasına gönderiyor, bu da önceki yanıtları kontrol ediyor gibi görünüyor


1
Oturumla ilgili bilgiler oturum değişkenlerinde saklanırsa ve bu durum temizlendiğinde oturum açmaya yeniden yönlendirirse bu gerçekleşebilir. Yani koda bağlıdır?
Steve

0

Bu soruya rastlayan herkes için MS'in bu belgelerine bakın - FormsAuthentication Timeout ayarıyla ilgili gerçekten iyi ayrıntılara sahiptir.

Bu doküman Kabul Edilmiş Cevapta - Kalıcı Çerez Hakkında (Oturumun Sona Ermesi) bmode'un yaptığı yorum hakkında ayrıntılı olarak açıklıyor

https://docs.microsoft.com/en-us/aspnet/web-forms/overview/older-versions-security/introduction/forms-authentication-configuration-and-advanced-topics-cs#specifying-the-tickets- Zaman aşımı değeri

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.