Membentuk waktu habis otentikasi vs waktu tunggu sesiState

139

Saya memiliki kode yang saya cari mengenai waktu sesi keluar dari situs web. Di web.config saya menemukan kode ini.

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

<sessionState timeout="30" />

Adakah yang tahu jika ada yang mengambil preseden daripada yang lain, dan bagaimana mereka berbeda. Terima kasih.

Lucky Luke2
sumber
Kemungkinan duplikat dari
Times

Jawaban:

226

Mereka adalah hal yang berbeda. Nilai Timeout Authentication Forms menetapkan jumlah waktu dalam menit ketika cookie otentikasi ditetapkan menjadi valid, yang berarti bahwa setelah valuebeberapa menit, cookie akan kedaluwarsa dan pengguna tidak akan lagi diautentikasi — mereka akan diarahkan ke login halaman secara otomatis. The slidingExpiration=truenilai pada dasarnya mengatakan bahwa selama pengguna membuat permintaan dalam nilai timeout, mereka akan terus dikonfirmasi (lebih detail di sini ). Jika Anda mengatur slidingExpiration=falsecookie otentikasi akan kedaluwarsa setelah valuebeberapa menit, terlepas dari apakah pengguna membuat permintaan dalam nilai batas waktu atau tidak.

Nilai SessionStatebatas waktu menentukan jumlah waktu yang diperlukan oleh penyedia Session State untuk menyimpan data dalam memori (atau penyimpanan dukungan apa pun yang digunakan, SQL Server, OutOfProc, dll.) Untuk sesi tertentu. Misalnya, jika Anda meletakkan objek di Sesi menggunakan nilai dalam contoh Anda, data ini akan dihapus setelah 30 menit. Pengguna mungkin masih diautentikasi tetapi data dalam Sesi mungkin tidak lagi ada. The Session Timeoutnilainya selalu reset setelah setiap permintaan.

Icarus
sumber
26
Satu klarifikasi: Batas waktu otentikasi bentuk menetapkan waktu kedaluwarsa untuk Tiket belum tentu untuk cookie tempat tiket dapat disimpan. Cookie mungkin tidak memiliki waktu kedaluwarsa sama sekali (secara membingungkan disebut cookie sesi, yang berarti cookie tersebut bertahan hingga pengguna menutup browser), atau bahkan mungkin tidak ada cookie sama sekali (otentikasi bentuk "cookieless"). Dalam kasus cookie yang persisten, autentikasi formulir mengatur kedaluwarsa cookie dan kedaluwarsa tiket ke waktu yang sama.
bmode
13
Klarifikasi lain dari MSDN: "Untuk mencegah kinerja yang dikompromikan, dan untuk menghindari beberapa peringatan browser untuk pengguna yang memiliki peringatan cookie dihidupkan, cookie diperbarui ketika lebih dari setengah dari waktu yang ditentukan telah berlalu." Jadi batas waktu cookie hanya direset jika setengahnya berakhir. Karenanya saran untuk mengaturnya menjadi 2x batas waktu sesi.
user917170
21

Nilai slidingExpiration = true pada dasarnya mengatakan bahwa setelah setiap permintaan dibuat, penghitung waktu diatur ulang dan selama pengguna membuat permintaan dalam nilai batas waktu, ia akan terus diautentikasi.

Ini tidak benar. Batas waktu cookie otentikasi hanya akan diatur ulang jika setengah dari batas waktu telah berlalu.

Lihat misalnya https://support.microsoft.com/de-ch/kb/910439/en-us atau https://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session -waktu habis/

Silvan Hofer
sumber
18

Dari apa yang saya pahami mereka independen satu sama lain. Dengan menjaga batas waktu sesi kurang dari atau sama dengan batas waktu otentikasi, Anda dapat memastikan variabel sesi khusus pengguna tidak bertahan setelah otentikasi habis waktu (jika itu adalah masalah Anda, yang menurut saya adalah yang normal ketika menanyakan hal ini). pertanyaan). Tentu saja, Anda harus secara manual menangani pembuangan variabel sesi saat keluar.

Berikut adalah respons yang layak yang dapat menjawab pertanyaan Anda atau setidaknya mengarahkan Anda ke arah yang benar:

Miring
sumber
7

Perbedaannya adalah bahwa satu (Forms timeout) berkaitan dengan otentikasi pengguna dan yang lainnya (Session timeout) berkaitan dengan berapa lama data cache disimpan di server. Jadi mereka adalah hal yang sangat independen, jadi yang satu tidak diutamakan daripada yang lain.

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

Konfigurasi ini mengirim saya ke halaman login setiap dua menit, yang tampaknya bertentangan dengan jawaban sebelumnya

Shlasasha
sumber
1
Itu bisa terjadi jika informasi terkait login disimpan dalam variabel sesi dan ketika itu hilang, itu diarahkan ke login. Jadi itu tergantung kodenya?
Steve
0

Bagi siapa pun yang tersandung pada pertanyaan ini, lihat dokumentasi ini dari MS - ini memiliki detail yang sangat bagus mengenai pengaturan Batas Waktu FormsAuthentication.

Dokumen ini menjelaskan secara rinci tentang komentar yang dibuat oleh bmode dalam Jawaban yang Diterima - tentang Cookie yang Persisten (Sesi vs Kedaluwarsa)

https://docs.microsoft.com/en-us/aspnet/web-forms/overview/older-versions-security/introduction/forms-authentication-configuration-and-advanced-topics-cs#specifying-the-tickets- nilai batas waktu

Naren
sumber