Bagaimana cara mengatur masa pakai cookie?


10

Saya mengalami masalah dalam mengatur cookie seumur hidup dalam contoh D8 saya. Saya ingin mengaturnya ke nol sehingga menutup browser log-off pengguna.

Saya telah menambahkan ini_set('session.cookie_lifetime', 0);ke file situs / default / settings.php. Tidak ada referensi cookie_lifetime sebelumnya dalam file. Saya menambahkan baris. Saya juga telah membersihkan cache Drupal dan membersihkan cache Chrome saya. Sayangnya, itu tidak dihormati. Sesi masih berlangsung setelah browser ditutup.

Saya telah mencari seluruh basis kode ini_set('session.cookie_lifetime', 200000);tetapi tampaknya tidak ada di situs saya. Saya tidak melihat di mana Drupal mengatur cookie seumur hidup. Saya juga mencoba menambahkan pengaturan melalui file php.ini di root tapi itu dikuasai oleh Drupal.

Saya merasa ini hal yang sederhana, jadi saya ingin menghindari plugin. Menantikan mendengar dari semua orang. Terima kasih sebelumnya.

Jawaban:


18

Untuk sesi, opsi cookie D8 menggunakan parameter kontainer alih-alih pengaturan. Buat services.ymlfile dalam folder yang sama dengan settings.php. Nilai default ada di default.services.yml. Anda dapat menyalin file ini ke services.ymldan memodifikasinya:

/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, terima kasih banyak. Inilah solusi yang akhirnya kami dapatkan.
Tony Stecca

Hai, mungkin Anda tahu cara untuk melakukannya secara dinamis?
Артем Ильин

2
@ АртемИльин, Anda tidak bisa, opsi cookie dikompilasi secara statis ke dalam wadah. Namun Anda dapat menukar layanan session_configurationdan mengganti __constructatau getOptionsDrupal \ Core \ Session \ SessionConfiguration.
4k4

4к4, terima kasih banyak atas jawaban Anda, semoga membantu)
Артем Ильин

Tautan ke pertanyaan tindak lanjut drupal.stackexchange.com/questions/279292/…
4k4

-2

Anda ingin mengubah cookie dan nilai sesi yang Anda tetapkan nilai #default ke nilai yang sama dari sesi atau cookie jika tidak akan berfungsi di 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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.