Jak ustawić czas życia ciasteczka?

10

Mam problem z ustawieniem czasu życia pliku cookie w mojej instancji D8. Chciałbym ustawić go na zero, aby zamknięcie przeglądarki wylogowało użytkownika.

Dodałem ini_set('session.cookie_lifetime', 0);do pliku site / default / settings.php. W pliku nie było wcześniejszego odwołania do pliku cookie_lifetime. Dodałem linię. Wyczyściłem również pamięć podręczną Drupal i wyczyściłem pamięć podręczną Chrome. Niestety nie jest to szanowane. Sesje nadal trwają po zamknięciu przeglądarki.

Przeszukałem całą bazę kodów, ini_set('session.cookie_lifetime', 200000);ale wydaje się, że nie istnieje ona w mojej witrynie. Nie widzę, gdzie Drupal ustawia czas życia ciasteczka. Próbowałem również dodać ustawienie za pomocą pliku php.ini w katalogu głównym, ale Drupal to wymienia.

Wydaje mi się, że to prosta sprawa, więc chciałbym uniknąć wtyczek. Czekamy na wiadomość od wszystkich. Z góry dziękuję.

Tony Stecca
źródło

Odpowiedzi:

18

W przypadku plików cookie sesji D8 używa parametrów kontenera zamiast ustawień. Utwórz services.ymlplik w tym samym folderze co settings.php. Domyślne wartości to default.services.yml. Możesz skopiować ten plik services.ymli zmodyfikować go:

/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
źródło
4k4, wielkie dzięki. To rozwiązanie, na którym w końcu wylądowaliśmy.
Tony Stecca
Cześć, może znasz jakiś sposób, aby to zrobić dynamicznie?
Артем Ильин
2
@ АртемИльин, nie możesz, opcje plików cookie są kompilowane statycznie w kontenerze. Możesz jednak zamienić usługę session_configurationi zastąpić __constructlub getOptionsDrupal \ Core \ Session \ SessionConfiguration.
4k4 23.04.19
4к4, wielkie dzięki za odpowiedź, mam nadzieję, że to pomoże)
Артем Ильин
Link do pytania uzupełniającego drupal.stackexchange.com/questions/279292/…
4k4,
-2

Chcesz zmodyfikować pliki cookie i wartości sesji, ustawiając # domyślne wartości na te same wartości sesji lub plików cookie, w przeciwnym razie nie będzie działać w 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
pavan kumar
źródło