쿠키 수명을 어떻게 설정합니까?


10

D8 인스턴스에서 쿠키 수명을 설정하는 데 문제가 있습니다. 브라우저를 닫으면 사용자가 로그 오프되도록 0으로 설정하고 싶습니다.

내가 추가 한 ini_set('session.cookie_lifetime', 0);사이트 / 기본 / settings.php 파일. 파일에 이전 cookie_lifetime 참조가 없습니다. 나는 라인을 추가했다. Drupal 캐시를 지우고 Chrome 캐시를 지 웠습니다. 안타깝게도 존중되지 않습니다. 브라우저를 닫은 후에도 세션이 계속 유지됩니다.

전체 코드베이스를 검색 ini_set('session.cookie_lifetime', 200000);했지만 내 사이트에 존재하지 않는 것 같습니다. Drupal이 쿠키 수명을 어디에서 설정하는지 알 수 없습니다. 루트에서 php.ini 파일을 통해 설정을 추가하려고 시도했지만 Drupal이 과도하게 규제하고 있습니다.

나는 이것이 간단한 것 같아서 플러그인을 피하고 싶습니다. 모두의 의견을 기다리겠습니다. 미리 감사드립니다.

답변:


18

세션 쿠키 옵션의 경우 D8은 설정 대신 컨테이너 매개 변수를 사용합니다. services.yml와 같은 폴더에 파일을 만듭니다 settings.php. 기본값은입니다 default.services.yml. 이 파일을 복사 services.yml하여 수정할 수 있습니다.

/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, 대단히 감사합니다. 이것이 우리가 마침내 착륙 한 솔루션입니다.
Tony Stecca

안녕하세요, 동적으로 수행 할 수있는 방법을 알고 있습니까?
Артем Ильин

2
@ АртемИльин, 쿠키 옵션은 컨테이너에 정적으로 컴파일됩니다. 그러나 서비스 session_configuration와 재정의 __construct또는 getOptionsDrupal \ Core \ Session \ SessionConfiguration을 교체 할 수 있습니다 .
4k4

4к4, 답변 해 주셔서 감사합니다. 도움이 되길 바랍니다)
Артем Ильин


-2

#default 값을 설정 한 쿠키 및 세션 값을 세션 또는 쿠키의 동일한 값으로 수정하려고합니다. 그렇지 않으면 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.