none
[ASP.NET3.5] 同一サイトを複数ブラウザでアクセスされる場合のクッキー管理 RRS feed

  • 質問

  • いつも、他力本願で申し訳ないです。

    現在、数ページを持つサイトを作っていて、ページ遷移時の変数受け渡しにクッキーを使っています。

    そこで、ブラウザを複数立ち上げて、このサイトにアクセスすると、後からアクセスした分のクッキー値に

    書き換えられてしまいます。クッキーの名前が同じなので当然です。

    そこで、ブラウザごとにクッキーの名前を変える方法を考えたのですが、何を基に変えればよいか

    悩んでいます。

    最初のログインページのSession.SessionIDなどが良いかなと思っていますが、URLでの

    パラメータ渡ししか方法が無いのでしょうか。

    表に見えない形で受け渡しする方法はありますでしょうか。

    区別できれば、SessionIDにこだわりません。

    どなたか、ご教授ください。

     

    2010年12月13日 10:38

回答

  • 私のコメントはセッション変数であり、SessionIDではありません。またSessionID には次の記述があります。

    Cookie ベースのセッション状態を使用する場合、ASP.NET は Session オブジェクトが使用されるまでセッション データのストレージを割り当てません。その結果、セッション オブジェクトがアクセスされるまで、ページ要求ごとに新しいセッション ID が生成されます。

    セッション変数を使っていないからSessionIDが設定されないだけなのでは?

    • 回答としてマーク マリカ 2010年12月14日 2:43
    2010年12月14日 2:14

すべての返信

  • セッション変数 を使うべきところかと。

    2010年12月13日 12:16
  • > 最初のログインページのSession.SessionIDなどが良いかなと思っていますが、

    具体的にどのように複数のブラウザを立ち上げているのですか?

    やり方によっては、セッションが同じになって、Session.SessionID は同じになり、
    佐祐理さんが提案されているセッション変数も同じになります。

    ただし、一般的なケースでのページ遷移時の変数受け渡しなら、問題なくセッション
    変数が利用できるはずです。

    試験などで普通でないことをしようとしています?

    2010年12月13日 14:32
  • 実現しようとしているページ遷移の仕方にもよりますが。
    ページ間ポスティングなんて方法もあります。

    http://www.atmarkit.co.jp/fdotnet/dotnettips/409asppostback2/asppostback2.html

    http://msdn.microsoft.com/ja-jp/library/ms178139(v=VS.100).aspx

    ただ、この方法を試すまえに佐祐理さんやSurferOnWwwさんが書いてることについて十分に考えてみるべきだとは思います。
    あまり一般的な状況ではなさそうなので。


    あおい情報システム株式会社 小野修司(どっとねっとふぁん)
    2010年12月14日 1:09
  • 佐祐理様、SurferOnWww様、返信ありがとうございます。

    実は、セッション変数で出来ると思って、組み込んだのですが、画面遷移すると値が消えるのです。

    画面遷移は、Response.Redirect("xxx.aspx",true)で行なっています。

    セッション変数は、SessionID毎に管理されるという事なのでSessionIDをチェックすると

    画面遷移の度に値が変わります。

    なので、URL渡ししか出来ないのかと思っていました。

    本来は消えるものでは無いのですね?

    どこかに、オプションの様な物があるのでしょうか?

     

    2010年12月14日 1:28
  • 私のコメントはセッション変数であり、SessionIDではありません。またSessionID には次の記述があります。

    Cookie ベースのセッション状態を使用する場合、ASP.NET は Session オブジェクトが使用されるまでセッション データのストレージを割り当てません。その結果、セッション オブジェクトがアクセスされるまで、ページ要求ごとに新しいセッション ID が生成されます。

    セッション変数を使っていないからSessionIDが設定されないだけなのでは?

    • 回答としてマーク マリカ 2010年12月14日 2:43
    2010年12月14日 2:14
  • 実は、セッション変数で出来ると思って、組み込んだのですが、画面遷移すると値が消えるのです。

    確かに状況によってはWebアプリケーションが再起動してセッション変数が失われることがありますが、画面遷移のタイミングで失われることは考えにくいです。といいますか、セッションが保持されないとWebアプリケーションとしてはほとんどの場合は機能しないでしょう。セッション変数の使い方は誤っていないですか?

     


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/
    2010年12月14日 2:39
    モデレータ
  • 皆様、申し訳ないです。

    色々とやっていて、しっちゃかめっちゃかになっていました。

    画面遷移でセッション変数の値は消えていませんでした。

    SesssionIDについては、佐祐理様のご指摘の通りでした。

    Session変数ありきのSessionIDなんですね。

    勉強になりました。

    2010年12月14日 2:42