【Rails】セッションとCookie
セッション
セッションとは、
1つのブラウザから連続して送られている一連のリクエストの間で「状態」を共有できるようにしたものです。
つまり、"ステートフル"な状態での通信をするための仕組みです。
なぜステートフルなのか。
ステートレスではダメなのか。
ステートレス通信だと、
ログイン認証やお買い物かごなどの機能のときに、
少し不便になる場合があるからです。
毎回「ログイン認証する」必要や、
「過去に買いたいと思っていていいね★を付けていた商品がかごから消えているのでそれらの商品まとめて全部かごに入れ直す」必要が出てきます。
なんかめんどくさーってなりますよね。
この「めんどくさー」っていう状態を解決するために、
ステートフル(状態を維持する)な通信を実現できる「セッション」が活躍します。
Railsにおけるsession
Railsでは、コントローラからsessionというメソッドを呼び出すことで、セッションにアクセス出来ます。
Railsアプリケーションにはユーザーごとにセッションが設定されています。
sessionの使い方
sessionはハッシュのように扱う事ができ、
セッションにデータを入れるには任意のキーを指定して値を格納します。
session[:user_id] = @user.id
値を取り出したい場合は、
@user.id = session[:user_id]
順番を逆さまにすることで値を取り出すことが出来ます。
続いてCookieに入ります。
Cookie
Cookieとは、
複数のリクエストの間で共有したい「状態」をブラウザ側に保存するものです。
セッションとよく似ていますが、
セッションは、アプリケーションサーバー側で独自に実現される仕組みであるのに対し、CookieはブラウザとWebサーバー間でやりとりがされます。
Railsでは、
cookiesというメソッドでブラウザから受け取り、送り返すことになるCookie情報にアクセスをし、データを取得したり、設定することが出来ます。
Cookieの歴史
【おまけ】Cookieの確認方法
普段の検索でGoogleChromeを使っている方は、URLに chrome://settings/content/cookies
を入力すると保存されているCookieの一覧を確認することができます。
ちなみに私はシークレットモードにしてたので、
Cookieをブロックしてました(笑)