Як встановити час cookie?


10

У мене виникають проблеми із встановленням терміну служби файлів cookie в моєму екземплярі D8. Я хотів би встановити його на нуль, щоб закриття браузера виходило з системи.

Я додав ini_set('session.cookie_lifetime', 0);у файл сайту / default / settings.php файл. Попередніх посилань на cookie_lifetime у файлі не було. Я додав рядок. Я також очистив кеш Drupal і очистив кеш Chrome. На жаль, його не поважають. Сесії все ще зберігаються після закриття веб-переглядача.

Я шукав всю базу коду, ini_set('session.cookie_lifetime', 200000);але, схоже, вона не існує на моєму сайті. Я не бачу, де Drupal встановлює час cookie. Я також спробував додати налаштування через файл php.ini в корені, але над цим Drupal переважає.

Я відчуваю, що це проста справа, тому я хотів би уникати плагінів. Будемо раді почути від усіх. Заздалегідь спасибі.

Відповіді:


18

Для параметрів cookie сеансу 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, дуже дякую Це рішення, яке ми нарешті приземлилися.
Тоні Стекка

Привіт, можливо ви знаєте будь-який спосіб зробити це динамічно?
Артем Ільін

2
@ АртемИльін, ви не можете, параметри файлів cookie збираються статично в контейнер. Однак ви можете поміняти місцями сервіс session_configurationі переопрацювати __constructабо getOptionsна Drupal \ Core \ Session \ SessionConfiguration.
4k4

4к4, велике спасибі за вашу відповідь, сподіваюся, що це допоможе)
Артем Ильин

Посилання на додаткове запитання drupal.stackexchange.com/questions/279292/…
4k4

-2

Ви хочете змінити файли cookie та значення сеансу, встановивши значення #default за однаковими значеннями сеансу чи cookie, інакше це не працюватиме в 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.