Output Diary

プログラミング × 読書 のアウトプットを発信しています

【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は、1994年にNetscape Communications(以下、Netscape)というアメリカの会社によって、考案・実装されました。
 

【おまけ】Cookieの確認方法

 

普段の検索でGoogleChromeを使っている方は、URLに chrome://settings/content/cookiesを入力すると保存されているCookieの一覧を確認することができます。

 

ちなみに私はシークレットモードにしてたので、

Cookieをブロックしてました(笑)