ฉันจะตั้งค่าอายุการใช้งานคุกกี้ได้อย่างไร


10

ฉันมีปัญหาในการตั้งค่าอายุการใช้งานคุกกี้ในอินสแตนซ์ D8 ของฉัน ฉันต้องการตั้งค่าเป็นศูนย์เพื่อให้การปิดเบราว์เซอร์ล็อกออฟผู้ใช้

ฉันเพิ่มลงini_set('session.cookie_lifetime', 0);ในไซต์ / default / settings.php แล้ว ไม่มีการอ้างอิง cookie_lifetime ก่อนหน้านี้ในไฟล์ ฉันเพิ่มบรรทัด ฉันได้ล้างแคช Drupal แล้วและล้างแคช Chrome ด้วย น่าเศร้าที่มันไม่ได้รับความเคารพ เซสชันยังคงมีอยู่หลังจากปิดเบราว์เซอร์

ฉันค้นหา codebase ทั้งหมดแล้วini_set('session.cookie_lifetime', 200000);แต่ดูเหมือนไม่มีอยู่ในเว็บไซต์ของฉัน ฉันไม่เห็นว่า Drupal กำลังตั้งค่าอายุการใช้งานคุกกี้ไว้ที่ไหน ฉันได้ลองเพิ่มการตั้งค่าผ่านทางไฟล์ php.ini ในรูท แต่นั่นก็ถูกครอบงำโดย Drupal

ฉันรู้สึกว่านี่เป็นสิ่งที่เรียบง่ายดังนั้นฉันจึงต้องการหลีกเลี่ยงปลั๊กอิน รอคอยที่จะได้ยินจากทุกคน ขอบคุณล่วงหน้า.

คำตอบ:


18

สำหรับตัวเลือกคุกกี้เซสชัน D8 ใช้พารามิเตอร์คอนเทนเนอร์แทนการตั้งค่า สร้างแฟ้มในโฟลเดอร์เดียวกันกับservices.yml ค่าเริ่มต้นอยู่ในsettings.php default.services.ymlคุณสามารถคัดลอกไฟล์นี้services.ymlและแก้ไข:

/sites/default/services.yml:

parameters:
  session.storage.options:
    # Default ini options for sessions.
    #
    # Some distributions of Linux (most notably Debian) ship their PHP
    # installations with garbage collection (gc) disabled. Since Drupal depends
    # on PHP's garbage collection for clearing sessions, ensure that garbage
    # collection occurs by using the most common settings.
    # @default 1
    gc_probability: 1
    # @default 100
    gc_divisor: 100
    #
    # Set session lifetime (in seconds), i.e. the time from the user's last
    # visit to the active session may be deleted by the session garbage
    # collector. When a session is deleted, authenticated users are logged out,
    # and the contents of the user's $_SESSION variable is discarded.
    # @default 200000
    gc_maxlifetime: 200000
    #
    # Set session cookie lifetime (in seconds), i.e. the time from the session
    # is created to the cookie expires, i.e. when the browser is expected to
    # discard the cookie. The value 0 means "until the browser is closed".
    # @default 2000000
    cookie_lifetime: 2000000

4k4 ขอบคุณมาก นี่คือทางออกที่เราได้มาถึงในที่สุด
Tony Stecca

สวัสดีบางทีคุณอาจรู้วิธีการทำแบบไดนามิกใด ๆ
АртемИльин

2
@ АртемИльинคุณทำไม่ได้ตัวเลือกคุกกี้จะถูกรวบรวมแบบคงที่ในคอนเทนเนอร์ อย่างไรก็ตามคุณสามารถสลับบริการsession_configurationและแทนที่__constructหรือgetOptionsDrupal \ Core \ Session \ SessionConfiguration
4k4

4к4, ขอบคุณมากสำหรับคำตอบของคุณ, หวังว่ามันจะช่วยได้)
АртемИльин

เชื่อมโยงไปยังคำถามติดตามผลdrupal.stackexchange.com/questions/279292/…
4k4

-2

คุณต้องการแก้ไขคุกกี้และค่าเซสชั่นที่คุณตั้งค่า #default เป็นค่าเดียวกันของเซสชั่นหรือคุกกี้มิฉะนั้นมันจะไม่ทำงานใน drupal 8

**Ex : #default 0
gc_maxlifetime: 0**

parameters:
  session.storage.options:
    # Default ini options for sessions.
    #
    # Some distributions of Linux (most notably Debian) ship their PHP
    # installations with garbage collection (gc) disabled. Since Drupal depends
    # on PHP's garbage collection for clearing sessions, ensure that garbage
    # collection occurs by using the most common settings.
    # @default 1
    gc_probability: 1
    # @default 100
    gc_divisor: 100
    #
    # Set session lifetime (in seconds), i.e. the time from the user's last
    # visit to the active session may be deleted by the session garbage
    # collector. When a session is deleted, authenticated users are logged out,
    # and the contents of the user's $_SESSION variable is discarded.
    # @default 200000
    gc_maxlifetime: 200000
    #
    # Set session cookie lifetime (in seconds), i.e. the time from the session
    # is created to the cookie expires, i.e. when the browser is expected to
    # discard the cookie. The value 0 means "until the browser is closed".
    # @default 2000000
    cookie_lifetime: 2000000
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.