TODO #22024

管理画面から短時間でログアウトする場合がある

坂口 昌己5ヶ月前に追加. 4ヶ月前に更新.

ステータス:終了開始日:
優先度:通常期日:
担当者:-進捗率:

100%

カテゴリ:管理画面全般
対象バージョン:4.1.2

説明

下記ソース内セッション設定のgc_maxlifetimeの値が60*24秒と短いのが原因ではないでしょうか。

lib/Baser/Config/setting.php

/**
 * セッションタイムアウト
 * 《ブラウザを開いた状態においてセッションが切れる条件》
 * session.gc_maxlifetime で設定された秒数ごとに一定の確率ごとにセッションが切れる
 * 確率は、session.gc_probability で設定する。確実にタイムアウトさせたい場合は、100を設定する。
 * デフォルト:1日1回、100分の1の確率でセッションが切れる
 */
    $timeout = 60 * 24;
/**
 * ブラウザを閉じた後のセッションの有効期限
 * デフォルト:1日
 */
    $cookieTimeout = $timeout;
/**
 * 設定
 */
    Configure::write('Session', array_merge(Configure::read('Session'), array(
        'cookie' => 'BASERCMS',
        'timeout' => $timeout,
        'cookieTimeout' => $cookieTimeout,
        'ini' => array(
            'session.serialize_handler' => 'php',
            'session.save_path'            => TMP . 'sessions',
            'session.use_cookies'        => $useCookies,
            'session.use_trans_sid'        => $useTransSid,
            'session.gc_maxlifetime'    => $timeout,
            'session.gc_divisor'        => 100,
            'session.gc_probability'    => 1,
            'session.cookie_secure' => 0
        )
    )));

https://book.cakephp.org/2.0/ja/development/sessions.html

Session.timeout - CakePHP のセッションハンドラがセッションを破棄するまでの時間を 分 単位で指定します。この値は下記の Session.autoRegenerate に影響を与えます。 これは CakeSession により処理されています。
Session.cookieTimeout - 任意のセッション継続時間を 分 単位で指定します。 もしこれが未定義の場合、 Session.timeout の値が使用されます。これは、 セッションクッキーに影響を与え、PHP 自体により処理されています。

http://php.net/manual/ja/session.configuration.php

 session.gc_maxlifetime integer
    session.gc_maxlifetime は、データが 'ごみ' とみなされ、消去されるまでの秒数を指定します。 ガベージコレクション (ごみの収集) は、 セッションの開始時に行われます (session.gc_probability と session.gc_divisor に依存します)。 

ソースコード内のコメントに

 * デフォルト:1日1回、100分の1の確率でセッションが切れる
 * session.gc_maxlifetime で設定された秒数ごとに一定の確率ごとにセッションが切れる

と記載がありますが、

timeout: 単位は分(60 * 24 = 1日)
cookieTimeout: 単位は分(60 * 24 = 1日)
session.gc_maxlifetime:単位は秒(60 * 24 = 1440秒 = 24分)

となっており、
一日が想定だとしたらgc_maxlifetimeは (60*24) * 60 = 86,400秒 = 1,440分 = 24時間 = 1日 になると思われますが、現状は1,440秒 = 24分になっているようです。

また、リポジトリを確認していみると過去のソースは
'session.gc_maxlifetime' => $timeout * 60 ,
になっていたようでしたので、
https://github.com/baserproject/basercms/commit/347a9ed9fe177f08b651402abfc70ac22a11c4ef
の改修時の不具合と思われます。


関係しているリビジョン

リビジョン 6e98b743
Kaburk が4ヶ月前に追加

fix #22024 管理画面から短時間でログアウトする場合がある件の改修 (#932)

履歴

#1 坂口 昌己5ヶ月前に更新

  • 説明 を更新 (diff)

#2 坂口 昌己5ヶ月前に更新

  • 説明 を更新 (diff)

#3 坂口 昌己5ヶ月前に更新

  • 説明 を更新 (diff)

#4 坂口 昌己5ヶ月前に更新

  • 説明 を更新 (diff)

#5 匿名ユーザー が4ヶ月前に更新

  • ステータス担当 から 解決 に変更
  • 進捗率0 から 100 に変更

更新履歴 basercms|commit:6e98b743d8231a1d015e8852575aa7c929d342c3 で適用されました。

#6 江頭 竜二4ヶ月前に更新

  • 対象バージョン4.1.2 にセット

#7 江頭 竜二4ヶ月前に更新

  • ステータス解決 から 終了 に変更

他の形式にエクスポート: Atom PDF