web-dev-qa-db-ja.com

ログイン期間が限られている理由は?

作業中のサイトでは、ほぼ毎日ログアウトしています。ログイン期間に制限があると思います。

Settings.phpのini_set()を使用して、すでにsession.gc_maxlifetimeを非常に高い値に設定しています。この設定は/devel/phpinfo

ログイン期間を制限するものは他にありますか?

編集:元の問題はDrupal 7サイトで発生しました。しかし、同じ問題と解決策がDrupal 8.にも当てはまると思います。8。コメントでこれ。

2
donquixote

TLDR

Session.gc_maxlifetimeおよびsession.cookie_lifetimeを探します。

ブラウザ開発者ツールでセッションCookieを検査する

これをデバッグするには、ブラウザ開発者ツールを使用してCookieの有効期限を検査できます。

ログインに関連するCookieのキーは「SESS ...」です。

「セッション」の「期限切れ」は、ブラウザが閉じられたときにCookieが期限切れになることを意味します。ほとんどの場合、これはあなたが望むものではありません!

他のDrupalサイト(例drupal.org))を開いてCookieを比較できます。同じにインストールされている他のDrupalサイトと比較することも興味深いでしょう。サーバー(例:localhost)、およびさまざまなブラウザーを使用すると、これがグローバルサーバー構成の問題なのか、特定のサイトの問題なのかを知る手がかりになります。

現在のPHP Drupalの設定を確認する

開いた admin/reports/status/php現在のphpinfo。探す session.cookie_lifetimeおよびsession.gc_maxlifetime

Session.cookie_lifetime === 0の値は、セッションCookieのExpire === Sessionを引き起こします。これは、ブラウザを閉じるとログアウトが発生することを意味します。それ以外の場合、数値はログイン期間の秒数を指定します。

詳細については、 http://php.net/manual/en/session.security.ini.php を参照してください。

コードとサーバー構成を検査する

  • drupalのサイトのini_set()ステートメント/*/settings.php
  • .htaccessファイル。
  • サーバーの設定。 /etc/Apache2/Apache2.confまたは/ etc/Apache2/sites-enabled/...にあります。grepはあなたの友達です。

https://www.drupal.org/project/autologouthttps:// wwwなど、ログイン期間を変更するモジュールも探します。 drupal.org/project/autologout

修正。

Session.gc_maxlifetimeおよびsession.cookie_lifetimeの適切な値を決定し、上記のいずれかの場所を使用してこれらの値を設定します。

私が取り組んでいるプロジェクトでは、両方の値を1209600 === 2週間に設定することにしました。
(2 * 7 * 24 * 60 * 60秒=== 1209600秒)

値について

これらの値の詳細については、以下を参照してください。

私が見つけた情報と私の理解から:

  • session.gc_maxlifetimeはサーバー側の制限ですが、session.cookie_lifetimeはクライアント側の制限です。
  • Session.gc_maxlifetimeがなくなっても、ガベージコレクションはたまにしか発生しないため(session.gc_probabilityとsession.gc_divisorに応じて)、セッションが少し長く生き続ける可能性があります。
  • ブラウザまたは他のクライアントは、Cookieの有効期間を無視または上書きし、セッションを意図したよりも長く存続させることができます。有効期限もサーバー側に保存されているので、これは役に立たないと思います。これが議論されている https://superuser.com/questions/442218/automatically-override-cookie-expiration-on-chrome を参照してください。
4
donquixote