• ベストアンサー
  • 困ってます

CGI::Sessionでのユーザとの紐付け方法

【できていること】 Cookieの発行 Cookieへのデータの書き込みと参照 【ここから質問】 ログイン認証があるWebアプリケーションにおいて、セッション情報(ID)とユーザ情報はどのように紐付けているのでしょうか? (ログイン成功時に生成するセッションIDとユーザ情報の紐付け情報をどこにどのように保持するのかがわかりません) Cookie(クライアント側)はセッションIDのみを保持しておいて、サーバ側で紐付け情報を保持するのだと思うのですが、CGI::Sessionではセッション生成時に作成されるcgise_XXXXファイルに書き込むのでしょうか?(そのメソッドか、具体例があれば教えてください) それとも紐付け専用のテーブルを用意しておくのでしょうか、もしくは、ユーザ情報のテーブルにあらかじめセッション情報を格納するカラムでも用意しておくのでしょうか。 よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • Perl
  • 回答数1
  • 閲覧数419
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1

セッションの保存領域に追加の情報を格納したいという質問でしょうか? たとえば $s->param('user', 'XXX'); で保存できます。セッションファイルを見てください。'user' => 'XXX' という文字列があるはずです。 取得したいときは、 $s->param('user'); で取得できます。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ご回答ありがとうございました。 $s->param('user', 'XXX'); は、サーバサイド側の処理だったのですね。 (user,XXXはクライアントのCookieには書き込まれませんよね?) このメソッドはクライアントのCookieに書き込む処理と勘違いしていました。 どうもありがとうございました。

関連するQ&A

  • Weblogicのセッションについて

    Weblogic10.0.3にてWebアプリケーションの 開発を行っていますが、解決しない問題があり 質問させていただきます。 現在、ログイン画面にてユーザーIDとパスワードを 入力してログイン後各処理を行うアプリを開発していますが、 ログイン時のユーザー情報をセッションに保持する作りに していますが、ログイン時にjsessionidがURLに 表示されてしまいます。 (例:http://testserver:9000/TestApp/Test.do;jsessionid=vFqyK3xMrJ9QCLJnW0X0r2w17ylBVhhD2VQT4qGwdMsGvhnZHdJQ!-425034523) 一度ログインするとそのブラウザを閉じるまでは、画面遷移をしても 何度ログイン・ログアウト処理(セッションの生成・削除)を 行っても二度と表示されません。 (画面遷移はStrutsで制御しています) セッションIDをCookieに保持する方法もあるようですが、 なるべくCookieを使いたくないので、セッションに保持するように したいのです。 web.xml、weblogic.xml、Weblogicサーバーの設定などで セッションIDを表示しなくなる方法がありましたら 教えてください。よろしくお願いします。

  • セキュリティーを確保したセッション管理

    現在、javaにて開発を計画中です。 作成するアプリケーションは、 ログイン画面 ↓ ユーザ、パスワード入力 ↓ 認証(データベースに登録された内容チェック) ↓ ユーザごとに許可されたページへの遷移 といった流れを想定しています。 セッション管理を行なう上で、 Javaでは、「HttpSession」を利用して、   // セッション開始   HttpSession session = request.getSession(true);   // セッションに情報を設定   session.setAttribute("USER_ID" , xxxx);   session.setAttribute("PASSWORD" ,yyyy); といった情報をセッションに保存し、ページ移動時にチェック する事を考えました。 あとCookieを利用する方法も考えましたが、CookieにID、passwordを保存することは セキュリティー上問題あると思います。 セッション管理について説明しているページには、Cookieには、セッションIDを保存し・・・とった 記述があるのをよくみます。 セキュリティー上、Cookieを利用する意味もよく分かっていません。 みなさんは、どのようにセッション管理をされているのか教えてください。 出来るだけセキュリティーを確保したいと思っています。 よろしくお願いします。

    • ベストアンサー
    • Java
  • gmailアドレスとgoogleIDの紐付け

    現在、google登録IDとgmailアドレスをそれぞれ別で保持しています。その2つを紐付けしたいのですが、どのようにすればよいかわかりません。 googleIDでログインをしても、新しいgmailアドレスを登録するよう促されてしまいます。こちらとしては、すでに保持しているgmailアドレスとそのIDを紐づけたいのです。毎回別々にログインし直すのも管理が手間なので、ご存知の方がいらっしゃいましたら、ご教授いただければ幸いです。 何卒よろしくお願い致します。

  • Ajaxでのセッション管理は、どのようにできますか?

    PHP,Ajaxともに初心者に毛が生えた程度のスキルですが、ちょっとした会員サイトを作っています。 ------------ 実現したいこと ------------ ログイン後、自分専用のブログのようなページで、適当にコメントを入力する。 コメント欄からカーソルが抜けた際に、「ユーザーID、日付、コメント内容」を AjaxのXMLHttpRequest で送信し該当ユーザーのDBに書き込む。 ------------ 困ったこと ------------ サーバサイド(PHP側)で、「ユーザーID、日付、コメント内容」を受信するまでは、できた。 後は、$_GETの値をDBに登録するのだが、受け取ったXMLHttpRequestのセッションが判らず、どのユーザーのDBに登録するかの判断ができません。 たとえば、下記のようにの内容を XMLHttpRequest でGET送信するのだが、これだと、誰でも更新できてしまいます。 http://www.dummy.jp/?userid=100&date=2006-05-17&comment=urlencode-shita-moji ログインした際に保持したセッションの持ち主=XMLHttpRequestのセッションを紐付けたいのですが、どのようにすれば、解決できるでしょうか? XMLHttpRequestで送信するGETデータに、セッションIDも書けば、紐付けはできるのですが、セキュリティの問題もあり、書いていません。 いい方法を教えてください。

    • 締切済み
    • PHP
  • テーブルデータをSESSIONに保存し、使いまわす

    お世話になります。 現在、ユーザーが記事を作成、編集、削除できるブログシステムを作成しています。 MYSQLのデータベーステーブルには以下の3つを用意しています。 ・usersテーブル:ユーザー名(name)、パスワード等(pw)、記事保存先ディレクトリ(dir)等のユーザ情報 ・articleテーブル:ブログ記事タイトルや本文等の情報 ・imagesテーブル:ブログ記事に使用している画像情報 ここで質問があります。 現在ユーザーがログイン成功時にセッションにはユーザーIDのみを $_SESSION["id"]として保存しています。 そして、記事投稿処理時や、記事編集処理時など、各場面で必要になった情報はそのときselectを使ってテーブルから毎回取り出しています。 しかし、こんなことをしなくても、ユーザーがログイン成功時に、セッションにユーザーID以外の情報も 保存しておけば、以後データベースから取り出す必要がなくなり便利かと思うのですが、セキュリティ面などからこのようなやり方はNGなのでしょうか? 1,まったく問題ないのか? 2,パスワード等の重要データはNGなのか? 3,ユーザーidのみにしておくべきなのか? 問題がある場合、その理由も教えていただけるとありがたいです。 例)ユーザーログイン時に、 $_SESSION["id"]=ユーザーID格納。 $_SESSION["name"]=ユーザー名を格納。 $_SESSION["dir"]=記事保存先ディレクトリを格納。 $_SESSION["article"]=ログインユーザーの記事情報を格納。 お分かりの方、教えていただけたら幸いです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • セッションについて

    codeigniterで作成を試みているのですが、セッションについてよくわかりません。 DBを用いてセッションを管理しようとしています。 たとえば、会員テーブルを id(auto_increment)で順に登録が増えるとします。 同一セッションで会員のレコードを増えるのを避けたいと考えてセッションテーブルと会員テーブルの紐付けを行うのが必要と考えました。 このとき、セッションテーブルにidを登録するのがいいのでしょうか? それとも会員テーブルにセッションIDを登録するのがいいのでしょうか? 一般的にはどのような設計をするのでしょうか? 初心者ですので、教えてください。

    • ベストアンサー
    • PHP
  • WebサーバとWebアプリケーション。セッションID、ユーザーID、パスワードを管理するのはどっち?

    セッションIDを習ったとき、 私の記憶ではセッションIDを管理するのはWebサーバと習いました。 普通、このOKWaveのようにログインを要するようなWebページは ログイン時に渡されたユーザーIDとパスワードを セッションIDに紐付ける形でサーバ側で管理することによって、 このセッションIDを通して、同一ユーザーと見なすということだったと思います。 しかし、ここでひとつ疑問が出ました。 ログイン時に、「自分は誰か、正しいユーザーか」ということを通信先に教えるために ユーザーIDとパスワードを入れますよね? でもここでユーザーIDとパスワードがほしいのはWebサーバではなく、 ユーザー情報を持っているWebアプリケーションではないのか?と考えました。 しかし、私はセッションIDはWebサーバが管理すると習ったように記憶しています。 ということは、 ・セッションIDはWebサーバが管理する ・ユーザーIDとパスワードはWebアプリケーションが管理する ということでいいのでしょうか? つまり、セッションIDとユーザーIDの対応表はWebアプリケーション側で実装し、 クライアントのリクエストから呼び出されるWebアプリケーションのプログラムは 「この呼び出した相手のセッションIDを教えてください」と Webサーバに聞くようなプログラムにしなければならないという認識で合っているのでしょうか? よく分かってないので、聞きたいことが非常に伝わりにくいかと思いますが、 よろしくお願いします。 長い上、お粗末な文章を最後まで読んでいただきありがとうございました

  • Cookieを利用したユーザ管理

    perl(CGI::Session)を利用したセッション管理について教えてください。 【実現したい機能】 会員DB(IDやパスワードを保持)を使用し、認証を行い、 認証成功したらCookieを発行し、会員別のページを表示する。 会員DBのIDとCookieを紐づける機能は、CGI::Sessionにあるのでしょうか。 CGI側でCookieから会員DBのIDを結びつけるためには新たにファイルなどを作成する必要があるのでしょうか。

    • ベストアンサー
    • Perl
  • セッション変数にパスワードを保持しても良い?

    ユーザーログイン機能について、取得した全てのDBユーザーテーブル情報を、セッション変数$_SESSION['★★']に格納しているサンプルコードがありました(2つ程見かけました) ■質問 ・セッション変数にパスワードを保持しても良いのでしょうか? ・生成した予測不能な文字列(セッションキー?)が破られたらどうしようもないので、そういう意味ではセッション変数には何を保存しても良いのでしょうか? 単に保存先が、セッション変数かDBかの違いでしかない? ・あるいは、セッション変数には必要最低限なもの、もしくはセキュテリティに関係ないもの、のみ保存して、その都度DBに問い合わせた方が良いのでしょうか? でも、これって非効率的?

    • ベストアンサー
    • PHP
  • セッションに格納する方法

    あるプロジェクトのWebアプリを引き継ぐことになりそのソースを見ていたところ あるメソッドで次のようにしてセッションに格納した値をやりくりしている部分があり???? と思ったので質問させてください。 //ログイン情報を取得 A aObj = (A)session.getAttribute("LOGIN_INFO"); //セッションンにフラグを格納 aObj.setFlag = true; そして別のメソッドで下記のように再度ログイン情報を取得し上記メソッドでセットしたフラグを取得 //ログイン情報を取得 A aObj = (A)session.getAttribute("LOGIN_INFO"); if(aObj.getFlag) { System.out.println("hello"); } ここで疑問なのですが最初に aObj.setFlag = true; とやった後に session.setAttribute("LOGIN_INFO", aObj); と明示的に記述してあげなくてもセッションの中のaObjの flagプロパティにはtrueに書き換えられるのでしょうか。 というかデバッグしてみたらtrueに書き換えがされていました。 (恐らく、オブジェクトの参照渡しのため) こういう書き方でセッションの中のオブジェクトが持つプロパティを書き換えるのって 一般的な書き方でしょうか。最初、パッと見たとき、セッションから取得したaObjにsetterで プロパティを書き換えているだけでセッションが保持するオブジェクトのプロパティを 書き換えているようには見えませんでした。 setterを実行することでセッションの保持するオブジェクトのプロパティを書き換えるという コードに違和感を感じたものでして・・・

    • ベストアンサー
    • Java