Comment définir la durée de vie du cookie?


10

J'ai du mal à définir la durée de vie du cookie dans mon instance D8. Je voudrais le mettre à zéro pour que la fermeture du navigateur déconnecte l'utilisateur.

J'ai ajouté ini_set('session.cookie_lifetime', 0);au fichier site / default / settings.php. Il n'y avait aucune référence cookie_lifetime précédente dans le fichier. J'ai ajouté la ligne. J'ai également effacé le cache Drupal et effacé mon cache Chrome. Malheureusement, ce n'est pas respecté. Les sessions persistent toujours après la fermeture du navigateur.

J'ai recherché la base de code entière ini_set('session.cookie_lifetime', 200000);mais elle ne semble pas exister dans mon site. Je ne vois pas où Drupal définit la durée de vie des cookies. J'ai également essayé d'ajouter le paramètre via un fichier php.ini à la racine, mais cela est annulé par Drupal.

J'ai l'impression que c'est une chose simple, donc j'aimerais éviter les plugins. Au plaisir d'entendre tout le monde. Merci d'avance.

Réponses:


18

Pour les options de cookie de session, D8 utilise des paramètres de conteneur au lieu de paramètres. Créez un services.ymlfichier dans le même dossier que settings.php. Les valeurs par défaut sont en default.services.yml. Vous pouvez copier ce fichier services.ymlet le modifier:

/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, merci beaucoup. C'est la solution sur laquelle nous avons finalement atterri.
Tony Stecca

Salut, peut-être connaissez-vous un moyen de le faire dynamiquement?
Артем Ильин

2
@ АртемИльин, vous ne pouvez pas, les options de cookies sont compilées statiquement dans le conteneur. Vous pouvez cependant échanger le service session_configurationet remplacer __constructou getOptionsde Drupal \ Core \ Session \ SessionConfiguration.
4k4

4к4, merci beaucoup pour votre réponse, j'espère que cela aide)
Артем Ильин

Lien vers la question de suivi drupal.stackexchange.com/questions/279292/…
4k4

-2

Vous souhaitez modifier les cookies et les valeurs de session que vous définissez les valeurs #default sur les mêmes valeurs de session ou cookies sinon cela ne fonctionnera pas dans 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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.