web-dev-qa-db-ja.com

Cookieの有効期間を設定するにはどうすればよいですか?

D8インスタンスでCookieの有効期間を設定できません。ブラウザを閉じるとユーザーがログオフするように、これをゼロに設定したいと思います。

ini_set('session.cookie_lifetime', 0);をsite/default/settings.phpファイルに追加しました。ファイルに以前のcookie_lifetime参照がありませんでした。行を追加しました。また、Drupalキャッシュをクリアして、私のChromeキャッシュをクリアしました。残念ながら、それは尊重されていません。ブラウザを閉じた後もセッションは持続します。

コードベース全体でini_set('session.cookie_lifetime', 200000);を検索しましたが、サイトに存在しないようです。 DrupalがCookieの有効期間を設定している場所がわかりません。ルートのphp.iniファイルを介して設定を追加しようとしましたが、それはDrupalによって統治されています。

これは簡単なことなので、プラグインは避けたいです。皆様からのご連絡をお待ちしております。前もって感謝します。

10
Tony Stecca

セッションCookieオプションの場合、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
17
4k4