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


10

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によって上書きされています。

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

回答:


18

セッション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

4k4、どうもありがとう。これが最終的に着手したソリューションです。
トニーステッカ

こんにちは、多分あなたはそれを動的に行う方法を知っていますか?
АртемИльин

2
@АртемИльин、できません。Cookieオプションは静的にコンテナにコンパイルされます。ただし、サービス入れ替えることができますsession_configurationし、オーバーライド__constructまたはgetOptionsDrupalの\コア\セッション\ SessionConfigurationのを。
4k4

4к4、あなたの答えのための多くのおかげで、それが役に立てば幸い)
АртемИльин

フォローアップの質問drupal.stackexchange.com/questions/279292/…
4k4

-2

#default値をセッションまたはCookieと同じ値に設定したCookieとセッション値を変更したい場合、それは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.