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

BugTrack-plugin/39

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

セッション情報のブラウザへの保存

  • 投稿者: Yoshimov
  • カテゴリ: 修正
  • 優先度: 普通
  • 状態: リリース済
  • 日時: 2003年09月02日 12時58分29秒

 内容

セッション情報をブラウザに保存し、指定時間内であればブラウザを終了してもログイン状態を保持するようにしてみました。

3.5.0用のパッチです。

*** CGI2-org.pm	Sat Aug 23 19:34:45 2003
--- CGI2.pm	Tue Sep  2 12:49:16 2003
***************
*** 49,68 ****
  sub get_session {
  	my $self    = shift;
  	my $wiki    = shift;
! 	
! 	if(!defined($self->{session_cache})){
! 		my $dir     = $wiki->config('log_dir');
! 		my $session = CGI::Session->new("driver:File",$self,{Directory=>$dir});
! 		
! 		my $cookie = CGI::Cookie->new(-name=>'CGISESSID',-value=>$session->id());
! 		print "Set-Cookie: ".$cookie->as_string()."\n";
! 		
! 		$self->{session_cache} = $session;
! 		return $session;
! 		
  	} else {
! 		return $self->{session_cache};
  	}
  }
  
  #===========================================================
--- 49,70 ----
  sub get_session {
  	my $self    = shift;
  	my $wiki    = shift;
! 
! 	my $session;
! 	if(!defined($self->{session_cache})) {
! 	    my $dir     = $wiki->config('log_dir');
! 	    $session = CGI::Session->new("driver:File",$self,{Directory=>$dir});
! 	    $self->{session_cache} = $session;
  	} else {
! 	    $session = $self->{session_cache};
  	}
+ 	# 常に Cookie を更新
+ 	my $limit = $wiki->config('session_limit');
+ 	my $cookie = CGI::Cookie->new(-name=>'CGISESSID',
+ 				      -value=>$session->id(),
+ 				      -expires=>'+'.$limit.'m');
+ 	print "Set-Cookie: ".$cookie->as_string()."\n";
+ 	return $session;
  }
  
  #===========================================================

 コメント

  • これだと、Set-Cookieヘッダが増えてしまうようなので、BBS-サポート掲示板/89のパッチをご覧ください。 - Yoshimov (2003年09月19日 07時29分56秒)
  • 実現方法は異なりますが3.5.2の開発版ですでに実装されていますのでステータスを「完了」にしておきます。 - たけぞう (2003年11月21日 00時43分13秒)
  • 3.5.2でリリースしました。 - たけぞう (2003年12月20日 12時45分20秒)
お名前: コメント:
CGI2-diff.txt

最終更新時間:2003年12月20日 12時45分20秒