railsにおけるsessionとcookieの概念とweb技術でいうsessionとcookieの概念の違いについて疑問があります。
web技術でいうsessionやcookieについては私は下記のように理解しています。
cookie
ステートレスなHTTP通信に状態を持たせるために、クライアント側のブラウザなどに保存されているデータ
HTTP通信の際に、HTTPリクエストヘッダのcookieヘッダに保存されているデータをくっつけて送信する。
サーバーAからcookieをもらった場合、cookieヘッダに情報をつけるのはサーバーAとの通信の時のみ
session
Webアプリケーションにおいて、何度かのHTTPリクエストを行う際にその一連の流れをsessionという。
複数のHTTP通信を1セッションとする場合には状態を記憶しておく必要があるため、sessionが必要になる。
サーバー側でsessionIDを発行し、その IDに紐付ける形でユーザーの今の状態をデータベースなどに記憶しておき、そのsessionIDはcookieにつけてクライアント側に保存する。そうすることでクライアント側はsessionIDを送るだけで今のユーザーの状態をサーバー側から受け取ることができる
おおよそ上記の理解です。
しかし、railsチュートリアルでは、下記のような説明がなされていました。
cookie
Railsでセッションを実装する方法として最も一般的なのは、cookiesを使う方法です。cookiesとは、ユーザーのブラウザに保存される小さなテキストデータです。cookiesは、あるページから別のページに移動した時にも破棄されないので、ここにユーザーIDなどの情報を保存できます。アプリケーションはcookies内のデータを使って、例えばログイン中のユーザーが所有する情報をデータベースから取り出すことができます。
session
本節および8.2では、その名もsessionというRailsのメソッドを使って一時セッションを作成します。この一時セッションは、ブラウザを閉じると自動的に終了します1 。続く第9章では、Railsのcookiesメソッドを使った、もっと長続きするセッションの作り方について学びます。 セッションをRESTfulなリソースとしてモデリングできると、他のRESTfulリソースと統一的に理解できて便利です。ログインページではnewで新しいセッションを出力し、そのページでログインするとcreateでセッションを実際に作成して保存し、ログアウトするとdestroyでセッションを破棄する、といった具合です。
cookieの説明は分かったのですが、sessionの説明が自分が理解していたsessionとは異なり混乱しています。
混乱しているのは下記の点です。
sessionは一時セッション(ブラウザが閉じたら失われるデータ)を作るという説明は、sessionはHTTPリクエストの一連の流れという概念であり、sessionIDなどを発行し、それらと状態を紐付けてデータベースに保存するという主にサーバーサイド側で動くものと思っていた自分の認識と違う。
もしかしたらここでいうsessionというメソッドは自分が思っているsessionとは別物なのでしょうか??
詳しい方ご教授いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/06/20 12:07
2021/06/20 13:19