WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:cookieでのセッション管理について

0:[投稿] my [2004/01/19 17:22 ][環境:IE6 apache+mod_perl, perl]

session 管理をcookieで行っていたのですが、ブラウザのウィンドウを
2つ上げてそのページへ行くと、2つとも同じセッションになってしまう
というのに最近(やっと)気づきました。

いまさらurlの後ろにセッションidを付与するやり方に変更すると大変な
作業になってしまう為、困っています。
cookieを利用して、複数ウィンドウのセッション管理をするいい方法はないでしょうか?


1:[回答] ふじ [2004/01/19 19:51 ]

cookie を使用する以上、どうしようもないと思いますので、
> urlの後ろにセッションidを付与するやり方
の工数が少なくて住む方法。

HTML::StickyQuery というモジュールを使うのはいかがでしょうか。
http://search.cpan.org/~ikebe/HTML-StickyQuery-0.12/StickyQuery.pm

ちなみに、URLにセッションIDを埋めこむ方法は、セッションID漏洩の
危険性が大きくなりますのでご注意を。

mod_perl であれば Apache::StickyQuery も使えそうです。
# 私は使ったことがないですが。


2:[質問] バギンズ [2004/01/19 23:43 ]

1ウィンドウ1セッションでなければいけないのは、どういう理由なのでしょう?
ウィンドウ単位で別々のログインができるようにするとかですか?

また、意図的に複数のウィンドウを開き、各々別々のセッション管理を行いたいのであれば、cookieの中に各ウィンドウ名ごとのセッション情報を書き込んでおけばいいように思えます。


3:[回答] ふじ [2004/01/20 02:03 ]

>>2
> また、意図的に複数のウィンドウを開き、各々別々のセッション管理を行いたいのであれば、cookieの中に各ウィンドウ名ごとのセッション情報を書き込んでおけばいいように思えます。

どちらのウィンドウからのリクエストなのかをサーバ側が認識するためには、
リクエストにウィンドウ名を付加する必要があります。
(cookie の値はどちらのウィンドウからリクエストしても同一ですから)

システム内のすべてのリンクやフォームにウィンドウ名を送信するロジックを挿入するのは、
「urlの後ろにセッションidを付与する」
のと同程度の手間が掛かりそうな気がします。
# なにか勘違いしてますでしょうか……


4:[回答] バギンズ [2004/01/20 02:32 ]

>>3
ふじさんの書かれている事はごもっともですが、
私が「意図的に複数のウィンドウを開き」と書いたのは、
例えば子ウィンドウに特定の意味を持たせて専用の
CGI等にアクセスする事を想定したものであって、
複数のウィンドウが同一ページをアクセスできるように
する事を想定したものではありません。

逆に複数のウィンドウで同一ページをアクセスする事を
想定するのであれば、複数のウィンドウが1つのセッション
しか持てなくても問題ない気がしたので、
「1ウィンドウ1セッションでなければいけないのは、どういう理由なのでしょう? 」
の質問となっています。


5:[回答] my [2004/01/20 09:22 ]

ふじさん、バギンズさん、有り難うございます。

1台のpcを複数の方が使う環境にあり、複数の方のログインが考えられます。
そのため、1ウィンドウ1セッションを行う必要が出てきてしまったのです。

やはりcookieだけで行うのは無理なのでしょうか?


6:[回答] ふじ [2004/01/20 13:40 ]

>>5
> 1台のpcを複数の方が使う環境にあり、複数の方のログインが考えられます。
複数の人が「一台のPCから同時に」アクセスするわけではないのなら、
cookie の有効期限をブラウザのセッション限りにすれば(つまり、有効期限を明示的に設定しない)
よいのでは。

使用しおわったらブラウザを閉じる、という運用で。

複数人が使用する環境で、ブラウザのセッション以上の寿命の cookie を
セッション管理に使用するのはまずいでしょう。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World