Wie stelle ich die Lebensdauer der Cookies ein?


10

Ich habe Probleme beim Festlegen der Cookie-Lebensdauer in meiner D8-Instanz. Ich möchte es auf Null setzen, damit das Schließen des Browsers den Benutzer abmeldet.

Ich habe ini_set('session.cookie_lifetime', 0);der Datei site / default / settings.php hinzugefügt . Die Datei enthielt keine vorherige Referenz zu cookie_lifetime. Ich habe die Zeile hinzugefügt. Ich habe auch den Drupal-Cache und meinen Chrome-Cache geleert. Leider wird es nicht respektiert. Sitzungen bleiben auch nach dem Schließen des Browsers bestehen.

Ich habe die gesamte Codebasis durchsucht, ini_set('session.cookie_lifetime', 200000);aber sie scheint auf meiner Website nicht vorhanden zu sein. Ich sehe nicht, wo Drupal die Cookie-Lebensdauer festlegt. Ich habe auch versucht, die Einstellung über eine php.ini-Datei im Stammverzeichnis hinzuzufügen, aber das wird von Drupal außer Kraft gesetzt.

Ich denke, das ist eine einfache Sache, deshalb möchte ich Plugins vermeiden. Ich freue mich darauf, von allen zu hören. Danke im Voraus.

Antworten:


17

Für die Sitzungscookie-Optionen verwendet D8 Containerparameter anstelle von Einstellungen. Erstellen Sie eine services.ymlDatei im selben Ordner wie settings.php. Die Standardwerte sind in default.services.yml. Sie können diese Datei kopieren services.ymlund ändern:

/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, vielen Dank. Dies ist die Lösung, auf die wir endlich gestoßen sind.
Tony Stecca

Hallo, vielleicht wissen Sie, wie Sie es dynamisch machen können?
23ртем Ильин

2
@ АртемИльин, Sie können nicht, die Cookie-Optionen werden statisch in den Container kompiliert. Sie können jedoch den Dienst austauschen session_configurationund überschreiben __constructoder getOptionsDrupal \ Core \ Session \ SessionConfiguration.
4k4

4к4, vielen Dank für Ihre Antwort, hoffe es hilft)
Артем ИлИн


-2

Sie möchten die Cookies und Sitzungswerte, für die Sie #default-Werte festgelegt haben, auf dieselben Werte für Sitzungen oder Cookies ändern, da dies sonst in Drupal 8 nicht funktioniert

**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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.