タイムアウトの判定を最終アクションからの経過時間に変更するプラグイン
こちらよりダウンロード
MTで、UserSessionTimeoutに値を設定すると、タイムアウトの時間が指定できる。だけどこれ、変な仕様で、最終アクションからの経過時間ではなくて、ログインしてからの経過時間で判定している。そうすると、ずーっとログインして作業していても、時間になったらタイムアウトしてしまう。それって超不便じゃないかな。
ということで、タイムアウトの判定を最終アクションからの経過時間に変更するプラグイン。
設定
mt-config.cgiに
UserSessionTimeout 20000
とセッションタイムアウトの時間を記述します(単位は秒)
記述しない場合のデフォルトは、
UserSessionTimeout 14400 で4時間です。
ソース
package MT::Plugin::TimeoutJudgedLastAction; use strict; use base qw(MT::Plugin); use MT; our $VERSION = '1.0'; my $plugin = MT::Plugin::TimeoutJudgedLastAction->new({ name => 'TimeoutJudgedLastAction', version => $VERSION, author_name => 'takeru-c', author_link => 'http://d.hatena.ne.jp/takeru-c/', description => '最終アクションからの時間でタイムアウト判定をします。', }); MT->add_plugin($plugin); no warnings qw(redefine); *MT::Session::get_unexpired_value = \&_get_unexpired_value; sub _get_unexpired_value { use MT::Session; my $timeout = shift; my $candidate = MT::Session->load(@_); if ($candidate && $candidate->start() < time - $timeout) { $candidate->remove(); $candidate = undef; } elsif ($candidate) { $candidate->start(time); $candidate->save; } return $candidate; } 1;
まぁソースみるとわかると思うけど、実際にやってることは、セッションタイムアウト判定をしている部分で、時間内だったらセッション開始時刻を現在時刻で上書きするだけ。
$candidate->start(time); $candidate->save;
ぜひお試しください。
追記
一部修正しました。
my $sess = MT::Session->load($candidate->id()); $sess->start(time); $sess->save; ↓ $candidate->start(time); $candidate->save;
無意味に2回ロードしてたよorz
- 作者: 関根元和,シックスアパート
- 出版社/メーカー: ラトルズ
- 発売日: 2009/04/01
- メディア: 単行本
- クリック: 19回
- この商品を含むブログ (4件) を見る