¿Cómo configuro la duración de la cookie?


10

Tengo problemas para configurar la duración de la cookie en mi instancia D8. Me gustaría establecerlo en cero para que cerrar el navegador cierre la sesión del usuario.

He agregado ini_set('session.cookie_lifetime', 0);al sitio / default / settings.php archivo. No había ninguna referencia anterior de cookie_lifetime en el archivo. Agregué la línea. También borré el caché de Drupal y borré mi caché de Chrome. Lamentablemente, no se está respetando. Las sesiones aún persisten después de cerrar el navegador.

He buscado en toda la base de código ini_set('session.cookie_lifetime', 200000);pero no parece existir en mi sitio. No veo dónde está configurando Drupal la duración de la cookie. También he intentado agregar la configuración a través de un archivo php.ini en la raíz, pero eso está siendo descartado por Drupal.

Siento que esto es algo simple, así que me gustaría evitar los complementos. Esperamos escuchar de todos. Gracias por adelantado.

Respuestas:


18

Para las opciones de cookies de sesión, D8 utiliza parámetros de contenedor en lugar de configuraciones. Cree un services.ymlarchivo en la misma carpeta que settings.php. Los valores predeterminados están en default.services.yml. Puede copiar este archivo services.ymly 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, muchas gracias. Esta es la solución que finalmente encontramos.
Tony Stecca

Hola, ¿quizás conoces alguna forma de hacerlo dinámicamente?
Артем Ильин

2
@ АртемИльин, no puede, las opciones de cookies se compilan estáticamente en el contenedor. Sin embargo, puede intercambiar el servicio session_configurationy anular __constructo getOptionsde Drupal \ Core \ Session \ SessionConfiguration.
4k4

4к4, muchas gracias por su respuesta, espero que ayude)
Артем Ильин

Enlace a la pregunta de seguimiento drupal.stackexchange.com/questions/279292/…
4k4

-2

Desea modificar las cookies y los valores de sesión que establece # valores predeterminados a los mismos valores de sesión o cookies; de lo contrario, no funcionará en 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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.