Как установить время жизни куки?


10

У меня проблемы с установкой времени жизни куки в моем экземпляре D8. Я хотел бы установить его на ноль, чтобы при закрытии браузера пользователь выходил из системы.

Я добавил ini_set('session.cookie_lifetime', 0);в файл site / default / settings.php. В файле не было предыдущей ссылки cookie_lifetime. Я добавил строку. Я также очистил кеш Drupal и кеш Chrome. К сожалению, это не соблюдается. Сессии все еще сохраняются после закрытия браузера.

Я искал всю кодовую базу, ini_set('session.cookie_lifetime', 200000);но она, кажется, не существует на моем сайте. Я не вижу, где Drupal устанавливает время жизни куки. Я также попытался добавить настройку через файл 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или getOptionsDrupal \ 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.