Come posso impostare la durata dei cookie?


10

Ho problemi a impostare la durata dei cookie nella mia istanza D8. Vorrei impostarlo su zero in modo che la chiusura del browser disconnetta l'utente.

Ho aggiunto ini_set('session.cookie_lifetime', 0);al file site / default / settings.php. Non vi era alcun riferimento cookie_lifetime precedente nel file. Ho aggiunto la linea. Ho anche cancellato la cache di Drupal e cancellato la mia cache di Chrome. Purtroppo, non viene rispettato. Le sessioni persistono anche dopo la chiusura del browser.

Ho cercato l'intero codebase per ini_set('session.cookie_lifetime', 200000);ma non sembra esistere nel mio sito. Non vedo dove Drupal sta impostando la durata dei cookie. Ho anche provato ad aggiungere l'impostazione tramite un file php.ini nella radice, ma questo è stato sovrastato da Drupal.

Sento che questa è una cosa semplice, quindi vorrei evitare i plugin. In attesa di notizie da tutti. Grazie in anticipo.

Risposte:


18

Per le opzioni relative ai cookie di sessione, D8 utilizza i parametri del contenitore anziché le impostazioni. Crea un services.ymlfile nella stessa cartella di settings.php. I valori predefiniti sono in default.services.yml. È possibile copiare questo file services.ymle modificarlo:

/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, grazie mille. Questa è la soluzione su cui finalmente siamo atterrati.
Tony Stecca,

Ciao, forse conosci un modo per farlo in modo dinamico?
Артем Ильин,

2
@ АртемИльин, non puoi, le opzioni sui cookie sono compilate staticamente nel contenitore. È comunque possibile scambiare il servizio session_configuratione sostituire __constructo getOptionsdi Drupal \ Core \ Session \ SessionConfiguration.
4

4к4, molte grazie per la risposta, spero che sia d'aiuto)
Артем Ильин

Link alla domanda di follow-up drupal.stackexchange.com/questions/279292/…
4k4

-2

Vorresti modificare i cookie e i valori di sessione che hai impostato #default valori sugli stessi valori di sessione o cookie, altrimenti non funzionerà in 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.