ページの作成や編集にはユーザ登録が必要です。
Farm使用時のセッションタイムアウト
- 投稿者: のむら
- カテゴリ: 本体
- 優先度: 普通
- 状態: 着手
- 日時: 2006年08月16日 12時30分38秒
内容
Farmごとにセッションタイムアウトを指定した際、タイムアウト時間が短いFarmへのアクセスがあった場合に、他のFarmのセッションもその時間でセッションが破棄されるように思います。
Farmのセッションディレクトリが共通のため、lib/CGI2.pmのremove_session()がFarmの区別をしていないことに原因があります。
追試せずに申し訳ないですが、報告のみさせていただきます。
コメント
- 他のFarmもですが、親Wikiのセッションも破棄されているように思います。 - まき (2007年07月03日 14時00分43秒)
- セッションクッキーのパス情報にFarm名が含まれていないことが原因で他のFarmセッションも切れてしまうようです。また、親Wikiのセッションが切れる原因はセッションクッキーの削除処理で正しく削除されず、クッキー値がブランクに変更されているだけとなっていることが原因です。Farmのパス指定の変更は mod_rewrite による変更へ対応できるかどうかを検討してから実装します。一旦、セッションクッキーの削除処理の修正を行います。 - KG (2017年12月06日 14時49分21秒)
- セッションクッキーを削除する処理の修正箇所は下記のとおりです。 - KG (2017年12月06日 14時52分14秒)
--- plugin\admin\Login.pm~ 2017-11-30 16:06:48.000000000 +0900 +++ plugin\admin\Login.pm 2017-12-05 23:31:04.000000000 +0900 @@ -109,13 +109,13 @@ my $session = $cgi->get_session($wiki); $session->delete(); $session->flush(); # Cookieの破棄 my $path = &Util::cookie_path($wiki); - my $cookie = CGI::Cookie->new(-name=>'CGISESSID',-value=>'',-expires=>-1,-path=>$path); + my $cookie = CGI::Cookie->new(-name=>'CGISESSID',-value=>'',-expires=>1,-path=>$path); print "Set-Cookie: ".$cookie->as_string()."\n"; $wiki->redirectURL($wiki->create_url({action=>"LOGIN"})); } #==============================================================================
- 元々は、expires にマイナス値を設定することで過去日になることを想定したコードのようですが、実際には過去日としてちゃんと設定されないという不具合になります。1にすることで1970年01月01日に設定される為、正常に削除されます。 - KG (2017年12月06日 14時55分40秒)
- TODO: セッションクッキーのパス指定の変更 - KG (2017年12月06日 14時56分42秒)
- 関連:BugTrack-wiki/319 - KG (2017年12月06日 14時58分43秒)
- expires設定値変更については fswiki3.6.5にてリリースしました。Farm対応の件が残りますのでこのまま着手状態にしておきます。 - KG (2018年03月30日 11時35分30秒)
最終更新時間:2018年03月30日 11時35分30秒