แบบฟอร์มการหมดเวลาการรับรองความถูกต้องกับ sessionState timeout


139

ฉันมีรหัสที่ฉันกำลังมองหาเกี่ยวกับช่วงเวลาการเข้าชมเว็บไซต์ ใน web.config ฉันเจอรหัสนี้

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

<sessionState timeout="30" />

มีใครรู้บ้างไหมว่าคนหนึ่งจะเป็นแบบอย่างเหนือสิ่งอื่นใดและพวกเขาต่างกันอย่างไร ขอบคุณ


คำตอบ:


226

พวกมันต่างกัน ค่าการหมดเวลาการรับรองความถูกต้องของฟอร์มจะกำหนดระยะเวลาเป็นนาทีที่คุกกี้การรับรองความถูกต้องตั้งค่าให้ถูกต้องซึ่งหมายความว่าหลังจากvalueจำนวนนาทีคุกกี้จะหมดอายุและผู้ใช้จะไม่ได้รับการรับรองความถูกต้องอีกต่อไป หน้าโดยอัตโนมัติ slidingExpiration=trueค่าเป็นพื้นบอกว่าตราบใดที่ผู้ใช้ทำให้การร้องขอภายในค่าการหมดเวลาที่พวกเขาจะยังคงได้รับการรับรองความถูกต้อง (ดูรายละเอียดเพิ่มเติมที่นี่ ) หากคุณตั้งค่าslidingExpiration=falseคุกกี้การรับรองความถูกต้องจะหมดอายุหลังจากvalueจำนวนนาทีโดยไม่คำนึงว่าผู้ใช้ทำการร้องขอภายในค่าการหมดเวลาหรือไม่

SessionStateค่าหมดเวลากำหนดระยะเวลาที่ผู้ให้บริการสถานะเซสชันจะต้องถือข้อมูลในหน่วยความจำ (หรือสิ่งที่จัดเก็บสำรองข้อมูลจะถูกใช้, SQL Server, OutOfProc ฯลฯ ) สำหรับช่วงใดช่วงหนึ่ง ตัวอย่างเช่นหากคุณวางวัตถุในเซสชันโดยใช้ค่าในตัวอย่างของคุณข้อมูลนี้จะถูกลบหลังจาก 30 นาที ผู้ใช้อาจยังคงได้รับการรับรองความถูกต้อง แต่อาจไม่มีข้อมูลในเซสชันอีกต่อไป Session Timeoutค่ารีเซ็ตเสมอทุกครั้งหลังการร้องขอ


26
คำชี้แจงหนึ่ง: หมดเวลาการรับรองความถูกต้องของแบบฟอร์มกำหนดเวลาหมดอายุสำหรับตั๋วไม่จำเป็นสำหรับคุกกี้ที่อาจมีการจัดเก็บตั๋ว คุกกี้อาจไม่มีเวลาหมดอายุเลย (เรียกว่าคุ๊กกี้เซสชันซึ่งหมายความว่าจะคงอยู่จนกว่าผู้ใช้จะปิดเบราว์เซอร์) หรืออาจไม่มีแม้แต่คุกกี้เลย ในกรณีของคุกกี้ถาวรการรับรองความถูกต้องของฟอร์มจะตั้งค่าการหมดอายุของคุกกี้และการหมดอายุตั๋วในเวลาเดียวกัน
bmode

13
คำชี้แจงเพิ่มเติมจาก MSDN: "เพื่อป้องกันประสิทธิภาพที่ถูกบุกรุกและเพื่อหลีกเลี่ยงคำเตือนเบราว์เซอร์หลายรายการสำหรับผู้ใช้ที่เปิดใช้คำเตือนคุกกี้คุกกี้จะได้รับการอัปเดตเมื่อเวลาผ่านไปกว่าครึ่งเวลาที่ระบุ" ดังนั้นการหมดเวลาของคุกกี้จะถูกรีเซ็ตเฉพาะเมื่อครึ่งเวลาผ่านไป ดังนั้นข้อเสนอแนะในการตั้งค่าเป็น 2x หมดเวลาเซสชั่น
user917170

21

SlidingExpiration = ค่าที่แท้จริงนั้นโดยทั่วไปบอกว่าหลังจากทุกคำขอที่ทำไว้ตัวจับเวลาจะถูกรีเซ็ตและตราบใดที่ผู้ใช้ทำการร้องขอภายในค่าการหมดเวลาเขาจะได้รับการตรวจสอบต่อไป

สิ่งนี้ไม่ถูกต้อง การหมดเวลาคุกกี้การรับรองความถูกต้องจะถูกตั้งค่าใหม่หากหมดเวลาครึ่งหนึ่งของการหมดเวลา

ดูตัวอย่างhttps://support.microsoft.com/de-ch/kb/910439/en-usหรือhttps://itworksonmymachine.wordpress.com/2008/07/17/forms-authentication-timeout-vs-session -หมดเวลา/


18

จากสิ่งที่ฉันเข้าใจพวกเขาเป็นอิสระจากกัน ด้วยการทำให้การหมดเวลาเซสชันน้อยกว่าหรือเท่ากับการหมดเวลาการรับรองความถูกต้องคุณสามารถตรวจสอบให้แน่ใจว่าตัวแปรเซสชันเฉพาะสำหรับผู้ใช้นั้นไม่คงอยู่หลังจากการรับรองความถูกต้องหมดเวลา (หากเป็นปัญหาของคุณซึ่งฉันคิดว่าเป็นเรื่องปกติ คำถาม). แน่นอนคุณจะต้องจัดการกับการกำจัดตัวแปรเซสชั่นด้วยตนเองเมื่อออกจากระบบ

นี่คือการตอบสนองที่ดีที่อาจตอบคำถามของคุณหรืออย่างน้อยก็ชี้คุณไปในทิศทางที่ถูกต้อง:


7

ความแตกต่างคือหนึ่ง (Forms timeout) เกี่ยวข้องกับการพิสูจน์ตัวตนของผู้ใช้และอื่น ๆ (Session timeout) เกี่ยวข้องกับระยะเวลาที่ข้อมูลแคชถูกเก็บไว้บนเซิร์ฟเวอร์ ดังนั้นพวกเขาจึงเป็นสิ่งที่อิสระมากดังนั้นจึงไม่มีความสำคัญเหนือสิ่งอื่นใด


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

การกำหนดค่านี้จะส่งฉันไปที่หน้าเข้าสู่ระบบทุกสองนาทีซึ่งดูเหมือนว่าจะตอบกลับคำตอบก่อนหน้านี้


1
ซึ่งอาจเกิดขึ้นได้หากข้อมูลที่เกี่ยวข้องกับการเข้าสู่ระบบถูกเก็บไว้ในตัวแปรเซสชันและเมื่อล้างข้อมูลดังกล่าวจะเปลี่ยนเส้นทางไปยังการเข้าสู่ระบบ ดังนั้นมันขึ้นอยู่กับรหัส?
Steve

0

สำหรับใครก็ตามที่สะดุดกับคำถามนี้โปรดอ่านเอกสารนี้จาก MS - มีรายละเอียดที่ดีเกี่ยวกับการตั้งค่าการหมดเวลาของ FormsAuthentication

เอกสารนี้อธิบายรายละเอียดเกี่ยวกับความคิดเห็น bmode ในคำตอบที่ได้รับการยอมรับ - เกี่ยวกับคุกกี้ถาวร (เซสชัน vs หมดอายุ)

https://docs.microsoft.com/en-us/aspnet/web-forms/overview/older-versions-security/introduction/forms-authentication-configuration-and-advanced-topics-cs#specifying-the-tickets- หมดเวลาที่มีมูลค่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.