質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

2515閲覧

railsにおけるsessionとcookieの概念とweb技術でいうsessionとcookieの概念の違いについて

oeiqgfodgfhps

総合スコア35

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/06/20 09:21

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とは別物なのでしょうか??
詳しい方ご教授いただけると幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Rails標準では、Cookieにキーだけではなくセッションデータそのものも詰め込んでしまう仕組みが取られています。

ただ、「セッションの無効化が難しい」「データ容量が増える」などデメリットも大きいので、セッションデータは別に持つ、という実装も可能です。

投稿2021/06/20 09:41

maisumakun

総合スコア145899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oeiqgfodgfhps

2021/06/20 12:07

cookieの中にデータベースのデータそのものを詰め込むということなんですね! ではrailsのsessionメソッドはweb技術のセッションではなく、ただにブラウザのcookieにデータを一時保存しておくという役割なのですか??
maisumakun

2021/06/20 13:19

> ではrailsのsessionメソッドはweb技術のセッションではなく、ただにブラウザのcookieにデータを一時保存しておくという役割なのですか?? 保存場所が違うだけで、機能的には他のセッションと変わりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問