web-dev-qa-db-fra.com

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

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, il n'est pas respecté. Les sessions persistent toujours après la fermeture du navigateur).

J'ai recherché dans la base de code entière ini_set('session.cookie_lifetime', 200000); mais il ne semble pas exister dans mon site. Je ne vois pas où Drupal définit la durée de vie du cookie. J'ai également essayé d'ajouter le paramètre via un fichier php.ini à la racine, mais cela est dépassé 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.

10
Tony Stecca

Pour les options de cookie de session, D8 utilise des paramètres de conteneur au lieu de paramètres. Créer un services.yml fichier dans le même dossier que settings.php. Les valeurs par défaut sont dans default.services.yml. Vous pouvez copier ce fichier dans services.yml et 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
17
4k4