トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

BugTrack-wiki/288

ページの作成や編集にはユーザ登録が必要です。

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秒)
お名前: コメント:

最終更新時間:2017年12月07日 21時19分57秒